WordPressで1件だけ固定ページの内容を表示させる時の豆知識

トップページのある箇所だけにあるコンテンツを表示させたい、投稿ページの全ページに共通のコンテンツを表示させたい。しかもそれはユーザーが追記・変更できるようにしたい時ってありますよね。

WordPress3.5より前のバージョンなら「get_page」という関数があり、それで固定ページのIDを渡してあげるとそのIDに基づいた記事を取得することが出来ました。
ですが、WordPress3.5以上では「get_page」は非推奨になりました。

Codexによると「get_page」に代わりに「get_post」を使えと記述されています。
http://codex.wordpress.org/Function_Reference/get_page

get_postのCodexのサンプルを見ると以下のように書かれてます。

[php] <?php
$post_7 = get_post(7);
$title = $post_7->post_title;
?>
[/php]

post_titleを出力する場合は上記の書き方で、出力際に「echo esc_html($title);」としてあげれば固定ページのタイトルが出力されます。

問題は本文部分を出力する時です。
本文を取得したい場合、->post_titleだった部分を->post_contentに変更してあげると取得できます。

[php] <?php
$post_7 = get_post(7);
$content = $post_7->post_content;
?>
[/php]

で、出力する場合は「echo $content;」とすれば本文が出力されるのですが・・・
これだとpタグが付与されずに文章が全部つながった状態で出力されてしまいます。

そこで以下のように記述すると文書にPタグが付与され、うまく改行されるようになります。

[php] <?php
$post_7 = get_post(7);
$content = $post_7->post_content;
$content = apply_filters(‘the_content’, $content);
$content = str_replace(‘]]>’, ‘]]>’, $content);
echo $content;
?>
[/php]

この内容は以下のフォーラムで見つけました。
http://ja.forums.wordpress.org/topic/2846

参考になりましたm(__)m

※2003年10月28日 宮内さんに指摘頂き以下変更しました。
ありがとうございますm(__)m
変更前:$content = str_replace(‘]]>’, ‘]]>’, $content);
変更後:$content = str_replace(‘]]>’, ‘]]>’, $content);

WordPressで1件だけ固定ページの内容を表示させる時の豆知識

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です