WordPress 直上の親ページのIDやスラッグを取得する方法

WordPress 直上の親ページのIDやスラッグを取得する方法

WordPress で現在表示しているページの直上の親ページのスラッグを取得する方法を紹介します。
例えば、固定ページで現在表示しているページの親ページの情報を表示したい場合に便利な方法です。

親ページのIDを取得

現在表示している投稿から post_parent で親ページの ID を取得します。
次のコードは、投稿のグローバル変数 $post から post_parent の値を見て親ページの ID を取得、その ID から親ページのスラッグやタイトルを表示します。

<?php
$parent_id = $post->post_parent; // 親ページのIDを取得
?>

取得した親ページの ID から、スラッグ・タイトル・URLを表示します。

<?php
$parent_id = $post->post_parent; // 親ページのIDを取得
$parent_slug = get_post($parent_id)->post_name; // 親ページのスラッグを取得
echo $parent_slug; // 親ページのスラッグを表示
$parent_title = get_post($parent_id)->post_title; // 親ページのタイトルを取得
echo $parent_title; // 親ページのタイトルを表示
echo get_permalink($parent_id); // 親ページの URL を表示
?>

ID・スラッグ・タイトル・URL以外の情報の取得・表示方法はこちら。


<?php
$parent_id = $post->post_parent; //親ページのIDを取得
echo get_post($parent_id)->post_name; //スラッグ
echo get_post($parent_id)->post_title; //タイトル
echo get_post($parent_id)->post_date; //作成日
echo get_post($parent_id)->post_excerpt; //抜粋
echo get_post($parent_id)->post_content; //本文
?>

get_post 以外にも、関数 get_the_title() などのパラメーターに、直接親の ID を指定する方法もあります。


<?php
echo get_the_title($post->post_parent); // 親ページタイトル

 echo get_page_link($post->post_parent); // 親ページURL
?>

表示する条件が必ず決まっているような場面では、各関数に直接IDを指定する方法の方が簡単かもしれません。

直上の親ページのタイトルを取得する方法

直上の親ページのタイトルを取得する場合は、親ページの ID から get_post() を使ってさらに親のIDを取得します。
次のコードは、現在表示しているページ(例えば孫ページの場合)の親ページ(子ページ)のさらに親(親ページ)のページタイトルを取得する方法です。


<?php // 直上の親ページのタイトルを取得する方法
$parent_id = $post->post_parent; // 親ページのIDを取得
if ($parent_id) { // 親ページがあれば実行
$parent = get_post($parent_id); // 親ページの情報を取得
echo get_the_title($parent->post_parent); // 親ページの親のタイトルを表示
}
?>

親ページのカスタムフィールド値を取得する方法

親ページのカスタムフィールド値を取得する場合、カスタムフィールドプラグイン Advanced Custom Fields を使っていると、次のようなコードで取得できます。


<?php the_field('text_field',$parent_id); ?>

関数のパラメーターにフィールドネームと親ページの ID を指定します。
Advanced Custom Fields の詳しい情報はAdvanced Custom Fields の表示方法でより詳しく解説しています、こちらも合わせてご覧ください。

まとめ

WordPress で現在表示しているページの、直上の親ページのスラッグを取得する方法を紹介しました。
まずはページに合わせた取得方法を選択して親ページの ID を取得してみましょう。

スポンサーリンク

合わせて読みたい関連記事