現在のページに子ページがある場合にtrueを返す関数


8

「ステータステスト」を実行するための簡単な関数を作成しようとしています。目的は、表示されている現在のページに子ページがあるかどうかをテストして確認することです。これを使用してレイアウトを変更し、子ページに対応します。次のコードは動作するようですが、残念ながらサイコロはありません。

誰か私が見逃しているものを見ますか?

function is_subpage() {
global $post;                              // load details about this page

if ( is_page() && $post->post_parent ) {   // test to see if the page has a parent
    return true;                                            // return true, confirming there is a parent

} else {                                   // there is no parent so ...
    return false;                          // ... the answer to the question is false
}

}

回答:


14

上記の関数、ページに子あるかどうかではなく、他のページの子ページであるかどうかをテストします。

次のように、現在のページの子をテストできます。

function has_children() {
    global $post;

    $children = get_pages( array( 'child_of' => $post->ID ) );
    if( count( $children ) == 0 ) {
        return false;
    } else {
        return true;
    }
}

参考文献:


8

カスタム投稿タイプを使用している場合の、すべての投稿タイプのバージョンは次のとおりです

function has_children($post_ID = null) {
    if ($post_ID === null) {
        global $post;
        $post_ID = $post->ID;
    }
    $query = new WP_Query(array('post_parent' => $post_ID, 'post_type' => 'any'));

    return $query->have_posts();
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.