ワードプレスのget_page_children関数の使用方法・解説

概要

get_page_children関数は、特定の親ページを持つ子孫のページ情報を取得するためのWordPressの機能です。この関数がよく使われるケースには以下のようなものがあります。

  1. サイトマップの生成
  2. 階層型メニューの作成
  3. 特定の親ページに関連するサブページの表示
  4. カスタムテンプレートの作成におけるページ構造の利用
  5. ページナビゲーションの実装
  6. カテゴリーページのサブページ表示
  7. フロントエンドでのビジュアルコンポーネントの作成
  8. ウェブサイト内の関連コンテンツの表示

構文

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' );

説明: 現在のページの子ページをウィジェットとして表示するカスタム関数を定義します。

提供されたサンプルコードは全て著作権フリーのものです。

この関数について質問する


上の計算式の答えを入力してください