固定ページの情報取得

固定ページの情報取得
Image by Free-Photos from Pixabay

2020.11.23(更新日:2021.02.13)

固定ページってわかりにくい表現だけど、多分ブログで使用する場合は「プロフィール」とか「お問い合わせ」ページなどが該当するはず。要するに「1ページ完結型」のページかと。
投稿と同じ扱いで出来る事も多々あるので、うっかり同じ方法で「出来ない!」とならないために整理。

この記事は1年以上経過しています。内容的に古い場合があります。

固定ページのID(数値)を取得

$page_id = get_the_ID();

方法は投稿と同じ。ループ内で使用出来る…となっているが、$post(グローバル変数)を書き換えてない場合に限り、該当のページ内でループ外でも投稿IDを取得出来る。

スラッグ名から固定ページのID(数値)を取得

$obj = get_page_by_path( $slug );
$page_id = $obj->ID;

固定ページのスラッグを引数としてget_page_by_pathで取得。注意点は親子関係がある子のページの場合。
タームスラッグを「lunch」とし、その親を「meal」とした場合の例。

  • get_page_by_path( 'meal/lunch' )

固定ページのスラッグを取得

該当固定ページ内での取得

$page_slug = get_query_var('pagename');

引数が「slug」ではなく「pagename」なのが注意点。(ややっこしい)

固定ページのIDからスラッグを取得

$page_slug = get_post_field( 'post_name', $page_id );

グローバル変数を使ってもID、スラッグ取得は可能だが「これだけあれば他は不要」って場合はこれでいいかと。

固定ページのIDからその親ページを取得

$ancestors = get_post_ancestors( $page_id ); 

引数には$post(投稿オブジェクト)でも可。近い順から配列で親のIDを返してくれるので便利。
値が無い場合は空の配列が返却される。

固定ページのIDからその子ページを取得

$pages = get_pages();
$pages_children = get_page_children( $page_id, $pages );

子ページの情報が配列で返却される。値が無い場合は空の配列が返却される。
他にもWP_Queryでpost_parentを指定して持ってくるとかいろいろあるので目的に合わせて変える。

投稿タイトルや本文取得

投稿と同じなので以下参照。ただし固定ページはデフォルトで「抜粋」は存在しないので注意。

固定ページでも抜粋を使いたいよ…と言う場合

以下をfunctions.phpに。取得の仕方は投稿と同じ。

add_post_type_support( 'page', 'excerpt' );