如果父页面有子页面,则显示内容

时间:2012-11-22 作者:nicolas

使用这段代码,您可以显示内容,具体取决于它是否为子页面:

<?php
global $post;

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

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

<?php endif; ?>
但我想再添加一条语句,这样如果父页面有子页面,或者父页面没有子页面,我就可以有不同的内容。下面这样的内容行得通吗?如果是,那么“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; ?>
提前感谢!

3 个回复
最合适的回答,由SO网友: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; ?>

SO网友:jzatt

您还可以创建自己的条件标记。在里面functions.php 添加:

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\\u is\\u parent”。虽然在这一部分不太确定,但我想如果有一天“is\\u parent”被包含在核心中,那么它并不是真正的功能证明。

SO网友:fischi

你可以通过使用

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; ?>
和使用count( $children ) > 0 而不是你的XXX

结束

相关推荐

我的代码放在哪里:插件还是函数.php?

是否有easy to understand scheme 决定什么类型的代码属于插件或主题的functions.php?那里are many cases 还有很多debates 关于这个话题,主要是因为对WordPress的内部工作有一些误解。我要求的答案是基于事实,而不是观点。它应该解释如何处理这些问题(可能更多):自定义帖子类型和分类add_theme_support( \'automatic-feed-links\' );</像custom这样的SEO功能meta 元素主题切换通常有正反两面。