web-dev-qa-db-ja.com

親ページに子がある場合はコンテンツを表示

このコードを使用して、子ページかどうかに応じてコンテンツを表示できます。

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php else : ?>
This is a parent-page.

<?php endif; ?>

しかし、もう1つステートメントを追加したいと思います。そうすれば、それが子を持​​つ親ページ、または持たない親ページの場合、異なるコンテンツを持つことができます。以下のようなものでうまくいくでしょうか。もしそうなら、 "XXX"は何でしょうか?

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && XXX ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>

前もって感謝します!

2
nicolas

私はこのコードを使用してしまいました:

<?php
global $post;
$children = get_pages( array( 'child_of' => $post->ID ) );

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>
6
nicolas

独自のコンディショナルタグを作成することもできます。 functions.php addに:

function my_is_parent() {
    global $post;

    $children = get_pages('child_of='.$post->ID);
    if( count( $children ) > 0 ) {
        $parent = true;
    }

    return $parent;
}

そして、あなたのIFの代わりにXXXを追加してください:my_is_parent()

あなたが望むなら、もちろん "my_is_parent"の代わりに他の名前を付けることもできます。この部分はよくわかりませんが、 "is_parent"を使用することが、いつの日かコアに含まれるようになるのであれば、実際には機能的な証明にはなりません。

2
jzatt

あなたはそれを使ってそれを達成することができます

global $post;

$args = array (
    'parent' => $post->ID
);

$children = get_pages( $args );

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>

xXXの代わりにcount( $children ) > 0を使用

0
fischi