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);

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

「エンジニアのためのWordPress開発入門」を執筆しました!

WordPressを使った開発案件は依然多く、それに携わるWebエンジニアも多数存在します。ただし、モダンな開発手法に慣れたWebエンジニアがWordPressに初めて触れたとき、その独特のアーキテクチャやシステムの構成に戸惑いを感じることがあるかもしれません。だが、WordPressは、それらを補ったうえにさらに強力なメリットを持ち合わせています。本書は、PHPプログラマがWordPressで開発する際に必要な基礎知識から、現場で役立つ具体的なカスタマイズ手法や開発のポイントについて詳しく解説しています。

この記事を書いた人

NPO法人のHP制作(WordPress)やkintoneを使った業務システムの構築をしています。サイボウズ株式会社公認kintoneエバンジェリスト/CoderDojo西宮と梅田のチャンピオン/認定NPO法人宝塚NPOセンター理事/NPO法人SEIN理事/

コメント

コメントする

目次
閉じる