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

Last update 
/ Posted by Takumi Hirashima

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

親ページのIDを取得

現在表示している投稿から post_parent で親ページの ID を取得します。
例えば詳細ページで $post に対して post_parent を使って親ページの ID を取得。そこから投稿のスラッグやタイトルを取得します。

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

取得した親ページのIDから親ページの情報を取得します。

<?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; // 親ページのタイトルを出力
?>

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

<?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 以外では次のような方法もあります。

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

  echo get_page_link($post->post_parent); // URL
?>

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

現在表示しているページ(例えば孫ページの場合)の親ページ(子ページ)のさらに親(親ページ)のページタイトルを取得する方法です。

<?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 を使っていると、親ページのIDがわかれば、次のような方法で親ページのカスタムフィールド値を取得することができます。

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

まとめ

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

私が続けて読みたい関連記事

スポンサーリンク