サポート » テーマ » get_post()関数

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    何の問題なく使えるはずですが、何かトラブルが起きていますか?

    下のような形で使おうとしましたが出来ません。
    その箇所で処理が止まったかのようにそこから下の分のソースは表示されない状態です。
    <?php
    $post_id_1 = get_post(1);
    echo $post_id_1->post_content;
    ?>

    ちなみに、以下のような手でやりたいことは実現できました。
    <?php
    $post_id_1 = get_posts(‘include=1’);
    echo post_id_1[0]->post_content;
    ?>

    ・・・が、1件分で良いので上記が使えるならソチラの方が見た目的にスッキリしてていいなぁと思っています。

    ちなみに、関係あるかわかりませんが、
    WPバージョン:2.8.6日本語版
    PHPバージョン:4.4.7
    MySQLバージョン: 4.0.27
    です。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    get_post() の引数に直接数値や文字列を入れるとダメかもしれません。変数に入れてみてください。

    <?php
    $pid = 1;
    $post_id_1 = get_post($pid);
    echo $post_id_1->post_content;
    ?>

    なお、post_content の中身をそのまま echo することは好ましくありません。他のプラグインによる処理や HTML の整形が一切されないため、最悪 XSS 脆弱性を生む可能性があります。

    $content = $post_id_1->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;

    としてみてください。

    ありがとうございます!
    出来ました。直接数値を入れるとダメなんですね…。

    ちなみに、2番目のソースを試したところ出力したい値に<p></p>が自動で付与され
    希望の表示にならなかったのでstrip_tags()を使って
    以下のようにしましたが、コレは問題ないでしょうか?

    $content = $post_id_1->post_content;
    $content = apply_filters('the_content', $content);
    $content = strip_tags($content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;

    また、このソースの4行目の意味合いが全くわからないのですが、
    この行はどのような役割を担っているのでしょうか?
    よろしければ解説いただけると幸いです。

    蛇足かも知れませんが・・・

    直接数値を入れるとダメなんですね…。

    なぜ直接の値ではだめかというと、get_post関数の定義が

    function &get_post(&$post, $output = OBJECT, $filter = 'raw')

    と、post_idを参照で受け取っているので変数としての実体が必要なのです。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「get_post()関数」には新たに返信することはできません。