[WordPress]指定した固定ページIDのコンテンツを安全に取得表示する方法

WordPress
スポンサーリンク

WordPressのテンプレートを制作する際、特定の固定ページ(例:会社概要、利用規約など)のコンテンツを、他のページやカスタムテンプレート内に表示させたいことって多いんじゃないでしょうか。

「同じ情報を複数箇所で再利用したい」「コンテンツ管理の効率を高めたい」という時の必須のテクニックですので、今回はこの方法についての具体的なコードを解説します。


指定IDの固定ページコンテンツを取得・表示する基本形

WordPressでは、コンテンツを正しく「表示」するために the_content フィルターの適用が必須です。


なぜ apply_filters が必要なのか

上記のコードで最も重要な要素は apply_filters('the_content', $post_object->post_content) の部分です。

$post_object->post_content はデータベースに保存されている生のテキストデータに過ぎません。

apply_filters('the_content', ...) の処理を経ることで、WordPressが自動で行っている以下の処理が実行されます。

  1. ショートコードの展開:などの記述が画像ギャラリーに変換される。
  2. 自動段落追加(wpautop):エディターで改行した部分に p タグが適切に挿入される。

このフィルターを忘れると、コンテンツは「ただのテキストの塊」として表示され、デザインが台無しになってしまうんですね。


【応用編】コンテンツが存在しない場合の安全な処理(エラー回避策)

前述のコードには既にエラーハンドリングが含まれていますが、これはWebサイトの堅牢性(ロバストネス)を担保するために極めて重要です。

ページIDの打ち間違いや、クライアントが誤ってその固定ページを削除してしまった場合、サイト全体が真っ白(PHPエラー)になる事態は絶対に避けたいでしょう。

ポイントは、get_post()で取得したオブジェクトが、falseまたはnullでないかを確認すること。

if ($post_object)というシンプルな検証手続きが、システムクラッシュを未然に防ぐ「守りの一手」になるんですね。


【補足】コンテンツ以外の情報(タイトル、URLなど)の取得方法について

固定ページのコンテンツだけでなく、そのページのタイトルやURLなども同時に取得し、見出しとして利用したいケースも多々あると思います。

その場合、先ほど取得した $post_object を活用するか、関連関数を使用するのがスマートなやり方です。

取得したい情報 2025年推奨の取得方法($target_page_id = 4 の場合)
ページタイトル get_the_title($target_page_id)
パーマリンク/URL get_permalink($target_page_id)
抜粋(Excerpt) $post_object->post_excerpt または get_the_excerpt($target_page_id)
スラッグ $post_object->post_name

これらの情報とコンテンツを組み合わせることで、汎用性の高いカスタムモジュールを構築することが可能になります。

例えば、特定のページへの誘導ブロックを全ページで再利用するときなどに、この手法は非常に役立ちますね。

コメント

タイトルとURLをコピーしました