概要
has_post_parent
関数は、特定の投稿が親投稿を持っているかどうかを調べるための関数です。この関数は、親子関係のある投稿を扱う際に非常に便利で、以下のような機能を実装する際に使用されることがよくあります。
- 階層型の投稿タイプの作成
- 親子関係を検証するカスタムクエリ
- 投稿情報の整理
- ナビゲーションメニューの生成
- 特定の親を持つ投稿のフィルタリング
- 投稿のメタ情報の表示
- 子投稿一覧の表示
- テンプレートの条件分岐
構文
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>';
}
このサンプルでは、投稿が親投稿を持つ場合、その親投稿のタイトルとリンクを表示します。