我正在使用以下代码在侧边栏上列出当前页面的子页面。它工作得很好。
$titlenamer = get_the_title($post->post_parent);
$output = wp_list_pages(\'echo=0&depth=1&title_li=<div id="list-title-head">\'.$titlenamer.\'</div>\' );
if (is_page( )) {
$page = $post->ID;
if ($post->post_parent) {
$page = $post->post_parent;
}
$children=wp_list_pages( \'echo=0&child_of=\' . $page . \'&title_li=\' );
if ($children) {
$output = wp_list_pages (\'echo=0&child_of=\' . $page . \'&title_li=<div id="list-title-head">\'.$titlenamer.\'</div>\');
}
}
echo $output;
但如果父菜单没有子菜单,则此代码将在侧边栏上列出所有父页面。我怎样才能控制它?
如果父菜单没有任何子菜单,那么我想显示我定义的特定页面。如果这是不可能的,我不想为没有child的页面显示任何内容。
最合适的回答,由SO网友:Chip Bennett 整理而成
我会尝试更换您的$children
定义,使用get_page_children()
或get_children()
:
<?php
global $post;
$children = get_children( array(
\'post_type\' => \'page\',
\'post_parent\' => $post->ID,
\'post_status\' => \'publish\'
) );
if ( $children ) {
// Code to list child pages goes here
}
?>
此外,
wp_list_pages()
将始终返回字符串(填充的或空的),因此如果要对其进行测试,请使用:
if ( \'\' != $children )
。。。而不仅仅是:
if ( $children )
因为后者总是返回true,因为返回的是一个(空)字符串。