サポート » 使い方全般 » 静的ページへの記事の埋め込み

  • 解決済 stasta

    (@stasta)


    「自分が管理するウェブサイトのトップページ(index.html)に、同じサーバ内(wpディレクトリ)にあるWordpressの全カテゴリ・新着5件を表示。」の方法で、index.htmlの文字列が shift_jis の為、表示されるリストが化けてしまうのですが、うまく表示させる方法は有りませんでしょうか? よろしくお願いいたします。

    <?php require(‘./wp/wp-blog-header.php’); ?>

    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
    <html xmlns=”http://www.w3.org/1999/xhtml&#8221; xml:lang=”ja” lang=”ja” dir=”ltr”>

    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
    <title>○×ウェブサイト</title>
    </head>
    <body>
    <h1>○×ウェブサイト</h1>
    <p>ここは○×のウェブサイトです。</p>

    <h2>最新エントリー</h2>

      <?php
      $posts = get_posts(“numberposts=5&category=&orderby=post_date&offset=0”);
      foreach ($posts as $post):
      setup_postdata($post);
      ?>

    • <?php the_time(‘Y.m.d’) ?> “><?php the_title() ?>
    • <?php endforeach; ?>

    </body>
    </html>

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • 取得したデータを文字コード変換してから表示すれば解決すると思います。
    で、<?php the_title() ?>だとそのまま表示してしまうので、事前にコード変換してからechoします。

    $my_title = the_title('', '', false);
    $my_title = mb_convert_encoding($my_title, 'shift_jis', 'utf-8');
    echo $my_title;

    時間なども同じように変換してから表示すれば大丈夫だと思います(一応未検証)

    WordPress が出力する文字列を mb_convert_encoding() 関数を通して、UTF-8→sjis に変換してから出力すればよいです。

    <?php the_time('Y.m.d') ?><?php the_title() ?>

    を、以下のように変更すれば良いでしょう。(未検証)

    <?php the_time('Y.m.d') ?><?php echo mb_convert_encoding(get_the_title($post->ID), 'shift_jis', 'UTF-8'); ?>

    あと、sjis で出力するのならば、以下の <meta> タグは修正しておいたほうがいいですね。

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    まとめてやるなら、未検証ですが、以下のようにもできると思います

    <?php
    
    function callback($buffer){
     return mb_convert_encoding($buffer, 'shift_jis', 'UTF-8');
    }
    ?>
    <html>
    <head>…</head>
    <body>
    <?php
    
    ob_start("callback");
    
    foreach($posts as $key=>$post){
    
    wordPressから echo いろいろ;
    
    }
    
    ob_end_flush();
    ?>
    </body>
    </html>
    モデレーター IKEDA Yuriko

    (@lilyfan)

    携帯サイトとかだったら仕方ないですが、PC 向けサイトだったら Shift_JIS はやめてしまって UTF-8 に統一した方が幸せになれます。ハートマークとか丸数字が堂々と使えるわけですから (Shift_JIS では使えません。SJIS-win なら使えますが)。

    トピック投稿者 stasta

    (@stasta)

    ありがとうございます!

    <?php the_time(‘Y.m.d’) ?><?php echo mb_convert_encoding(get_the_title($post->ID), ‘shift_jis’, ‘UTF-8’); ?>

    で対応させて頂きました。

    最初なんかうまくいかなかったのですが、

    他のフォーラムでみた
    require(‘./wp-load.php’);
    に変更したらうまくいきました。

    解決したら「解決済み」にしておいてください。

    解決済みに変更しておきました。

    トピック投稿者 stasta

    (@stasta)

    スイマセン。
    ありがとうございます。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「静的ページへの記事の埋め込み」には新たに返信することはできません。