如何控制边栏上没有子项的页面列表的显示

时间:2012-05-25 作者:Libin

我正在使用以下代码在侧边栏上列出当前页面的子页面。它工作得很好。

$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的页面显示任何内容。

1 个回复
最合适的回答,由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,因为返回的是一个(空)字符串。

结束