query if page has not child

时间:2012-01-20 作者:andresmijares

我正在尝试创建一个显示几个子页面(子页面)的页面,但是如果该页面没有子页面,我希望显示一条消息。

我无法获得允许我执行以下操作的查询:

 if (Page has childs) {
    do this
 }
 else {
    display this
 }
有什么帮助吗?

提前感谢

2 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

$args = array(
    \'post_status\' => \'publish\',
    \'post_parent\' => $post_id
);
$children = get_posts( $args );

if( count( $children ) > 0 ) {
    //has children
} else {
    //does not have children
}
文档:get_posts()

如果您需要,这也应该允许您访问孩子的数据。如果需要中的任何其他参数$args (例如,文章类型),请确保包含这些内容。

SO网友:Jared

使用这样的东西怎么样(前提是您有办法获取正在检查子页面的页面ID):

$children = get_pages( array( \'child_of\' => $post->ID ) );

但是,如果您只想获得直系后代,请参阅m0r7if3r,否则这也适用:

$children = get_pages( array( \'child_of\' => $post->ID, \'parent\' => 0 ) );

然后使用count($children) 使用这样的if语句:

if( count( $children ) > 0 ) {
    // has children (and grandchildren if not using the \'parent\' param)
} else {
    // does not have children
}

结束