サポート » 使い方全般 » 自作トップページのindex.phpに新着5件表示

  • 解決済 sakurai07

    (@sakurai07)


    制作したホームページの他にblogというフォルダを作りそのフォルダにワードプレスをインストールしました。

    可能であればトップページ(index.php)にワードプレスの更新情報を表示したいとおもっております。

    この場合はどのようにしたら表示されるものなのでしょうか?

    宜しくお願いいたします。

15件の返信を表示中 - 1 - 15件目 (全19件中)
  • 「ワードプレスの更新情報」というのが何を指すかによって変わってきますが、
    最新記事であれば単純に以下のような感じでできるはずです。
    query_posts('showposts=5');

    あるいは、他サイトのfeedを読み込むというのであればSimplePieあたりを使うのが手軽な気がします。

    <?php require(‘./wp-blog-header.php’); ?>
    をindex.phpの先頭に入れてあげれば、Wordpressのタグがそのまま使えます。

    http://ja.forums.wordpress.org/topic/3433

    >>他サイトのfeedを読み込むというのであればSimplePieあたりを使うのが手軽な気がします。
    読み込みできましたができるだけRSSは利用しないようにしたいです。

    >><?php require(‘./wp-blog-header.php’); ?>
    >>をindex.phpの先頭に入れてあげれば、Wordpressのタグがそのまま使えます

    下記をそのままコピペで、ワードプレスindex.phpと同様フォルダに入れてみたのですが、画面が真っ白になってしまいました。

    何か方法がまちがっているのでしょうか?

    <?php require(‘./wp-blog-header.php’); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> 
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>hogeトップページ</title>
    ・
    ・
    ・
    ・
    </head>
    
    <body>
    ・
    ・
    ・
    ・
    <div id="news">
    <dl id="areaA">
    <dt>Aのカテゴリ</dt>
    <dd>
    <ul>
    <?php
    $myposts = get_posts('numberposts=5&category=1'); <!-- ID:1/5件 -->
    foreach($myposts as $post) :
    ?>
    <li><?php the_time('Y/m/d') ?>&nbsp;<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>
    </dd>
    </dl>
    </div>
    </body>
    </html>

    制作したホームページの他にblogというフォルダを作りそのフォルダにワードプレスをインストールしました。

    と、あるので、

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

    ですよね;)

    <?php require(‘./blog/wp-blog-header.php’); ?>
    の方法を
    制作したホームページの他にblogというフォルダを作りそのフォルダにワードプレスをインストールしました。
    でやったのですが画面が白のみ表示されていまったので、

    blogフォルダ内に
    <?php require(‘wp-blog-header.php’); ?>
    をやってみたのですが、やはり真っ白でした。

    WordPress のタグが使いたい場合は、wp-blog-header.php ではなく wp-load.php を Require するほうがより良いですね。

    この辺も参考にしてみてください。
    http://ja.forums.wordpress.org/topic/1918?replies=6

    wp-load.php
    で、表示されました。ありがとうございます。

    が、index.php(文字コードEUC)に設定してみたら文字化けしてしましました。

    wordpressがutfだからでしょうか?

    文字化けしないように設定するにはどのようにしたら良いでしょうか?

    が、index.php(文字コードEUC)に設定してみたら文字化けしてしましました。
    wordpressがutfだからでしょうか?
    文字化けしないように設定するにはどのようにしたら良いでしょうか?

    そうですね、WordPress では文字コードはUTF-8で扱われるので、どうしてもEUC-JPで出力したい場合は、UTF-8→EUC-JPに変換する必要があります。

    一番、簡単な方法は一行目を以下のように書き換え、ファイル自体は UTF-8 で保存しておくことです。

    <?php
    require(‘./wp-load.php’);
    mb_http_output("EUC-JP");
    ob_start("mb_output_handler");
    ?>

    ただし、これは ob_start() (http://jp2.php.net/manual/ja/function.ob-start.php) 関数で出力バッファをonにし、出力する前に文字コードを変更する方法なので、使用しているプラグインによっては副作用が発生するかもしれません。
    特に All In One SEO Pack など、プラグインの中で ob_start() を使っているプラグインが有効になっていると上手く動作しない可能性があります。

    最善策は、WordPress が出力する文字列を全て mb_convert_encoding() を通して、UTF-8→EUC-JP に変換してから出力することです。

    >wokamotoさん

    >WordPress のタグが使いたい場合は、wp-blog-header.php ではなく wp-load.php を Require するほうがより良いですね。

    おぉ、そうなんですね。お恥ずかしい。。。w
    差し支えなければ、今後の参考にwp-blog-header.phpwp-load.phpの根本的な使い方の違いなどをご教授ください。よろしくお願いします。

    元の質問とは、微妙にズレてきましたが…

    差し支えなければ、今後の参考にwp-blog-header.phpwp-load.phpの根本的な使い方の違いなどをご教授ください。よろしくお願いします。

    WordPress のタグ等を使用したいだけであれば、wp-load.phpを require するだけで充分だからです。
    ソースを読んでもらえば分かるのですが、 wp-blog-header.php では wp-load.php を require した後、グローバル変数 $wp_query を作って wp-includes/template-loader.php を require しています。
    これらは、WordPress テーマのテンプレート上にデータを展開するために必要な処理です。

    wp-login.php など、テーマのテンプレート上にデータを展開する必要が無い処理では wp-load.php だけを require していますね。

    <?php
    require(‘./wp-load.php’);
    mb_http_output("EUC-JP");
    ob_start("mb_output_handler");
    ?>

    を、入れてみたらEUCの部分がすべて文字化けして、更新情報(UTF-8)部分がきちんと表示されました。

    私の勘違いかもしれませんが、ご教授お願いできますでしょうか?
    宜しくお願いいたします。

    >wokamotoさん
    >元の質問とは、微妙にズレてきましたが…
    そうですね、すみません。でも理解できました。ありがとうございます。

    >sakurai07さん
    異なる質問を挟んでごめんなさい。
    問題がスムーズに解決できると良いですね!

    » sakurai07さん

    を、入れてみたらEUCの部分がすべて文字化けして、更新情報(UTF-8)部分がきちんと表示されました。

    私の回答を良く読まれましたでしょうか?

    一番、簡単な方法は一行目を以下のように書き換え、ファイル自体は UTF-8 で保存しておくことです。

    この方法は、すべての出力を UTF-8 → EUC-JP に変換する方法ですので、ファイル自体も UTF-8 で保存する必要があります。
    文字コードが混在すると、正常に変換されません。

    » digitalixさん
    いえいえ、理解していただいたようで幸いです。
    sakurai07 さんの質問も、段々と文字コードの問題のほうにズレてきてますし (^^;;;;

    >>wokamoto様

    簡単な方法は一行目を以下のように書き換え、ファイル自体は UTF-8 で保存しておくことです。
    保存しまして、requireで読み込むことができました。勉強になりましたありがとうございます。

    すいません最後に一点ですが、読み込んだあとの部分が文字化けしてしまいました

    これは戻す処理が必要なのでしょうか?

    大変申し訳ございませんがご教授お願いいたします!

    すいません最後に一点ですが、読み込んだあとの部分が文字化けしてしまいました

    読み込んだ後の部分と言うのは、具体的にどこを指すのでしょうか?

    私が例示したコードを簡単に説明します。

    まず ob_start("mb_output_handler"); と言う行以降、クライアントへの出力がサーバのメモリ上にキャッシュされます。
    サーバ上ですべての処理が終わると コールバック関数 mb_output_handler を使用して、キャッシュされていたクライアントへの出力文字データを mb_http_output("EUC-JP"); で指定した文字コード(EUC-JP)に変換してクライアントに出力します。
    ここで、キャッシュされていたクライアントへの出力に文字コードが混在している状態だと、文字コードの変換は正常に行われず文字化けする箇所が発生します。
    今回作成したphpファイル(index.php)と、このphpファイルが require しているphpファイルは、すべてUTF-8で作成されていなければいけません。
    EUC-JPコードが混じっていた場合、WordPressのタグの出力がUTF-8、phpファイルの地の文字(例えば<title>hogeトップページ</title>)がEUC-JPなので、UTF-8→EUC-JPに変換する際に、変換前はEUC-JPで出力されていた地の文字の部分もUTF-8だと解釈してEUC-JPに変換しようとして文字化けを起こします。

    ob_start() 関数は、使用する際にかなり気をつかう関数です。
    上記説明でも良く分からない場合は、この方法ではなく WordPress が出力する文字列を全て mb_convert_encoding() 関数を通して、UTF-8→EUC-JP に変換してから出力することをお勧めします。
    具体的には、ループして更新情報を取得している部分を以下のように書き換えれば良いと思います。(未検証)

    <ul>
    <?php
    $myposts = get_posts('numberposts=5&category=1'); <!-- ID:1/5件 -->
    foreach($myposts as $post) :
    ?>
    <li><?php the_time('Y/m/d') ?>&nbsp;<a href="<?php the_permalink(); ?>"><?php echo mb_convert_encoding(get_the_title($post->ID), 'EUC-JP', 'UTF-8'); ?></a></li>
    <?php endforeach; ?>
    </ul>

    この場合は、mb_http_output("EUC-JP");ob_start("mb_output_handler"); の2行は必要ありません。
    また、phpファイル自体もEUC-JPで作成してください。

15件の返信を表示中 - 1 - 15件目 (全19件中)
  • トピック「自作トップページのindex.phpに新着5件表示」には新たに返信することはできません。