我有这样的导航结构:
如果我正在查看“关于”页面,我希望侧边栏显示:
如果我正在查看“服务”页面,我希望侧边栏显示:
这是我目前正在使用的代码。如何修改它以使其按照我想要的方式工作?
<?php
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}
$children = get_pages('child_of='.$parent);
if( count( $children ) > 0 ) {
?>
<ul>
<?php wp_list_pages ("&title_li=&child_of=$parent"); ?>
</ul>
<?php } ?>
答案 0 :(得分:2)
这应该是彻底的,或者至少告诉你如何:
当查看具有子项(或是孩子)的页面时,它仅显示该父项的子项。
- 访问主页时,所有顶级页面都会在侧栏中列出。
- 访问没有孩子的顶级页面时,会列出所有顶级页面。
- 访问包含子项的顶级页面时,仅列出子页面和后代页面。
- 访问子页面时,仅列出该父页面的子页面和后代页面。
<?php
$output = wp_list_pages('echo=0&depth=1&title_li=<h2>Top Level Pages </h2>' );
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=<h2>Child Pages</h2>');
}
}
echo $output;
?>
来自:http://codex.wordpress.org/Function_Reference/wp_list_pages#List_subpages_even_if_on_a_subpage
此方法利用echo=0
参数,该参数将结果作为字符串返回给变量。 if ($children)
测试现在有效,因为wp_list_pages()
如果找不到匹配项将返回空。