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

概要

has_post_parent関数は、特定の投稿が親投稿を持っているかどうかを調べるための関数です。この関数は、親子関係のある投稿を扱う際に非常に便利で、以下のような機能を実装する際に使用されることがよくあります。

  1. 階層型の投稿タイプの作成
  2. 親子関係を検証するカスタムクエリ
  3. 投稿情報の整理
  4. ナビゲーションメニューの生成
  5. 特定の親を持つ投稿のフィルタリング
  6. 投稿のメタ情報の表示
  7. 子投稿一覧の表示
  8. テンプレートの条件分岐

構文

has_post_parent( $post_id );

パラメータ

  • $post_id (int, 必須): チェックしたい投稿のID。

戻り値

  • 返り値は真偽値です。指定した投稿が親投稿を持つ場合はtrue、持たない場合はfalseを返します。

関連する関数

使用可能なバージョン

has_post_parent関数は、WordPress 3.0以降で使用可能です。

コアファイルのパス

has_post_parent関数は、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: 投稿の親を確認する

$post_id = 42; // 投稿IDを指定
if ( has_post_parent( $post_id ) ) {
    echo "この投稿には親投稿があります。";
} else {
    echo "この投稿には親投稿はありません。";
}

このコードは、指定した投稿IDに親投稿があるかを確認し、その結果に応じてメッセージを表示します。

サンプル2: ループ内で親投稿を確認する

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        if ( has_post_parent( get_the_ID() ) ) {
            echo "親投稿あり: " . get_the_title();
        } else {
            echo "親投稿なし: " . get_the_title();
        }
    }
}

このサンプルでは、投稿ループ内で各投稿が親投稿を持つかどうかを確認し、その結果を表示しています。

サンプル3: 子投稿をリスト表示する

$children = get_children( array( 'post_parent' => $post_id ) );
if ( $children ) {
    foreach ( $children as $child ) {
        if ( has_post_parent( $child->ID ) ) {
            echo "子投稿: " . $child->post_title . " (親投稿あり)";
        }
    }
}

このコードは、特定の親投稿を持つ子投稿をリスト表示し、各子投稿のタイトルを親投稿の有無と共に表示します。

サンプル4: 投稿編集画面で親の有無を表示

add_action( 'edit_form_after_title', 'show_parent_status' );
function show_parent_status() {
    global $post;
    if ( has_post_parent( $post->ID ) ) {
        echo "<p>この投稿には親がいます。</p>";
    }
}

このコードは、投稿編集画面で親投稿の有無を表示します。親投稿がある場合、メッセージが表示されます。

サンプル5: 親投稿のリンクを表示

if ( has_post_parent( $post->ID ) ) {
    $parent_id = wp_get_post_parent_id( $post->ID );
    echo '親投稿: <a href="' . get_permalink( $parent_id ) . '">' . get_the_title( $parent_id ) . '</a>';
}

このサンプルでは、投稿が親投稿を持つ場合、その親投稿のタイトルとリンクを表示します。

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


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