WordPressで固定ページの親情報と子情報を取得して出力する方法

WordPress
スポンサーリンク

なぜ固定ページの親子関係を意識する必要があるのか?

Webデザイナーの皆さん、WordPressでサイト構築をする際、固定ページの階層構造を活かしたデザインやナビゲーションの組み込みに悩むことはありませんか?

特に企業サイトやサービス紹介ページなど、構造が複雑になりがちなサイトでは、「親ページ(サービス概要)の下に、子ページ(各サービス詳細)をぶら下げる」といった親子関係の設定が頻繁に求められます。

この親子関係をプログラムで自在に取得し、意図した場所に出力できるかどうかが、WordPressテーマの柔軟性とメンテナンス性を大きく左右するのです。本記事では、特定のIDだけでなく、現在のページ情報に基づいた汎用的な方法を含め、固定ページの親子情報を取得・表示する実践的なコードスニペットをご紹介します。


固定ページIDを指定した情報取得は保守性が低い?

たとえば、特定のID(例:34)を直接指定して情報を取得する方法は以下の通りです。


特定のページIDを直接指定する方法は、その時だけを見れば確かに確実ですね。
でも、サイトの改修やリニューアルでIDが変わってしまうリスクや、テンプレートを他のサイトに転用する際にIDの書き換えが発生する手間を考えると、保守性が高いとは言えません。

テンプレートファイルは、できる限り「どのページで使われても正しく動く」ように、汎用的に設計すべきなので、なるべく特定のIDに依存せず、任意の固定ページや現在の固定ページの情報を柔軟に取得・出力する方法から解説しましょう。


親ページ情報を汎用的に取得・出力する(特定のIDの場合も対応)

特定の固定ページ情報を取得し、そのタイトルや本文を抜き出す最もシンプルで確実な方法は、get_post() 関数または get_page() 関数を利用することです。


get_page()get_post() のエイリアス(別名)なので、現代のコーディングでは汎用性の高い get_post()を使うのが主流でしょう。

投稿オブジェクトを取得する

以下のコードは、指定したページID(ここでは例として34)の親ページとしての情報(タイトル、本文など)を取得し、表示するロジックです。


子ページ情報を一覧表示する(リスト出力の最適化)

親ページにぶら下がる子ページ(階層構造の下位にあるページ)を一覧で取得し、タイトル、抜粋、アイキャッチ画像をリスト表示する要件は、まさにWordPressのカスタムテンプレートで多用されるテクニックです。

get_posts() `関数を使うことで、特定の親を持つ子ページを簡単に取得可能です。


get_posts() で子ページをリストアップ

以下のコードは、指定した親ID(例:34)を持つ全ての子固定ページをループ処理し、必要な情報を取得・出力する、より最適化されたバージョンです。


現在表示中の固定ページの情報を取得する

IDを直書きせず、今見ている固定ページの親や子を取得したいというニーズも多いでしょう。
この場合、WordPressのグローバル変数の力を借りるのが最もスマートなやり方です。


①現在のページIDと親IDを取得する

現在表示している固定ページのIDは、グローバル変数 $post から簡単に取得できます。

情報PHPコード取得できる値
現在のページIDget_the_ID()または$post->ID102など
現在のページの親ID$post->post_parent親がなければ0


②現在のページの兄弟・子ページ一覧を取得する

現在のページIDを親IDとして渡せば、その直下の子ページ一覧が取得できます。

逆に、現在のページの親IDを取得し、それを post_parent に渡すと、兄弟ページを含む一覧が取得できます。

取得したい対象get_posts()への引数
現在表示中の子ページ一覧'post_parent'=>get_the_ID()
現在表示中の兄弟ページ一覧'post_parent'=>$post->post_parent

これらのコードを組み合わせれば、より柔軟で、どのサイトにも転用できる「生きている」テンプレートが完成するでしょう。この汎用的なテクニックは、今後のコーディングの効率を爆発的に高めるはずです。


【まとめ】固定ページの親子関係をマスターして制作を加速する!

機能採用すべき関数メリット
単一情報取得get_post()タイトル、本文など特定の情報にアクセスが容易
一覧情報取得get_posts()複数の記事をまとめて条件分岐・取得・出力が可能
テンプレートタグ有効化setup_postdata()the_title()などお馴染みのタグが使えるようになる

固定ページ構造は、サイトの「骨格」です。この骨格をプログラムで自在に操ることで、クライアントの細かな要望にも即座に対応できるようになるでしょう!

コメント

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