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

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

WordPress で現在表示しているページの直上の親ページのスラッグやIDを取得して表示する方法を紹介します。
例えば、固定ページで現在表示しているページの親ページの情報を表示したいときに便利な方法です。
ここで言う「直上」は、子ページなら親ページ、孫ページであれば子ページを指します。

  1. 親ページのIDを取得する方法
    1. 親ページのスラッグやタイトルを取得して表示する方法
    2. 親ページの作成日や本文を取得して表示する方法
  2. 直上の親ページのタイトルを取得する方法
  3. 親ページのカスタムフィールド値を取得する方法

親ページのIDを取得する方法

現在表示している投稿から post_parent で親ページの ID を取得します。
次のコードは、投稿のグローバル変数 $post から post_parentID を取得する方法です。

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

親ページのスラッグやタイトルを取得して表示する方法

取得した 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 を表示
?>

親ページの作成日や本文を取得して表示する方法

親ページの作成日や本文を取得して表示する方法を紹介します。
次のコードは、スラッグ・タイトル・作成日・抜粋・本文を表示する方法です。

<?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を取得。
親の親のIDを get_the_title に指定してタイトルを取得します。
次のコードは、現在表示しているページ(例えば孫ページの場合)の親ページ(子ページ)のさらに親(親ページ)のページタイトルを取得する方法です。

<?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を取得して表示する方法を紹介しました。
最上の親ページを取得したい場合はWordPress 最上の親ページのタイトルやリンクURLを取得する方法をご覧ください。