概要
get_page_children
関数は、特定の親ページを持つ子孫のページ情報を取得するためのWordPressの機能です。この関数がよく使われるケースには以下のようなものがあります。
- サイトマップの生成
- 階層型メニューの作成
- 特定の親ページに関連するサブページの表示
- カスタムテンプレートの作成におけるページ構造の利用
- ページナビゲーションの実装
- カテゴリーページのサブページ表示
- フロントエンドでのビジュアルコンポーネントの作成
- ウェブサイト内の関連コンテンツの表示
構文
get_page_children( $page_id, $pages );
パラメータ
$page_id
(int): 親ページのID。$pages
(array): すべてのページの配列(通常はget_pages()
で取得した結果)。
戻り値
- (array): 指定した親ページに属するすべての子ページのオブジェクトの配列。
関連する関数
使用可能なバージョン
- 4.0 以降で使用可能
コアファイルのパス
wp-includes/post.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 子ページのリストを取得して表示する
$children = get_page_children( 42, get_pages() );
if ( ! empty( $children ) ) {
echo '<ul>';
foreach ( $children as $child ) {
echo '<li>' . esc_html( $child->post_title ) . '</li>';
}
echo '</ul>';
}
説明: 親ページIDが42の子ページを取得し、それらのタイトルをリスト形式で表示します。
サンプルコード2: 子孫のページ情報を取得してカスタムクエリを作成する
$children = get_page_children( 10, get_pages() );
$args = array(
'post_type' => 'page',
'post__in' => wp_list_pluck( $children, 'ID' ),
);
$the_query = new WP_Query( $args );
説明: 親ページIDが10の子ページ情報を取得し、それらを使用してカスタムWP_Queryを生成します。
サンプルコード3: 子ページが存在するかどうかを確認する
$children = get_page_children( 20, get_pages() );
if ( empty( $children ) ) {
echo 'このページには子ページがありません。';
} else {
echo '子ページがあります。';
}
説明: 親ページIDが20の子ページが存在するか判断し、メッセージを表示します。
サンプルコード4: 子ページのリンクを作成する
$children = get_page_children( 5, get_pages() );
foreach ( $children as $child ) {
echo '<a href="' . esc_url( get_permalink( $child->ID ) ) . '">' . esc_html( $child->post_title ) . '</a><br>';
}
説明: 親ページIDが5の子ページのリンクを作成し、各リンクを表示します。
サンプルコード5: カスタムウィジェットで子ページを表示する
function display_child_pages_widget() {
$children = get_page_children( get_the_ID(), get_pages() );
if ( ! empty( $children ) ) {
echo '<div class="widget-child-pages">';
foreach ( $children as $child ) {
echo '<li>' . esc_html( $child->post_title ) . '</li>';
}
echo '</div>';
}
}
add_action( 'widgets_init', 'display_child_pages_widget' );
説明: 現在のページの子ページをウィジェットとして表示するカスタム関数を定義します。
提供されたサンプルコードは全て著作権フリーのものです。