我有点困惑wp_list_pages()
作用
假设我有3个顶级页面(没有父页面),每个页面都有一些子页面:
第1页[子页:1.1、1.2、1.3]第2页[子页:2.1、2.2、2.3]
第3页[子页:3.1、3.2]wp_list_pages( \'sort_column=menu_order&depth=0&title_li=&include=2,3\' );
我也尝试过将深度指定为深度=2:
wp_list_pages( \'sort_column=menu_order&depth=2&title_li=&include=2,3\' );
但是,顶层页面2和3显示时没有子页面。我不确定我是否正确理解了函数描述。
当子页面可以随时添加/删除时,我如何实现这样的功能。
非常感谢,Dasha
最合适的回答,由SO网友:dashaluna 整理而成
幸亏@Bainternet
为我指出exclude_tree
, 虽然我最终使用了一些不同的代码。
能够添加不必出现在菜单中的顶级页面非常重要(例如Improved Include Page Plugin. 使用exclude_tree
每次添加新的顶级页面时,我都需要更新代码。
相反,我有一个需要显示在菜单中的所有顶级页面的数组。然后我收集他们所有的desendant页面并使用wp_list_pages
仅显示安全页面。
代码如下:
<?php //main nav: use wp_list_pages to display cirtain parents pages and all thier descendant pages
$parents = array(2,3);
$children = array();
foreach($parents as $parent) {
$child_pages = get_pages( "child_of=$parent" );
if($child_pages){
foreach($child_pages as $child_page){
$children[] = $child_page->ID;
}
}
}
//merge $parents and $children
$menu_pages = array_merge((array)$parents, (array)$children);
$menu_pages_str = implode(",", $menu_pages);
?>
<ul id="main-nav">
<?php wp_list_pages( "sort_column=menu_order&title_li=&include=$menu_pages_str" ); ?>
</ul>
还有,看看法典
List parent Page and all descendant Pages 更多示例。
SO网友:Bainternet
当您使用include
wp\\u list\\u pages的参数您基本上是告诉它只在列表中包含这些特定页面。
您应该使用exclude_tree
相反,当使用此参数时,它将排除父页面和该父页面的所有子页面。
比如:
$top_pages_to_exclude = \'1\'; // the top page to be excluded ID, you can specify more then one \'1,2,23\'
$args = array(
\'sort_column\' => \'menu_order\',
\'depth\' => 2,
\'title_li\' => \'\',
\'exclude_tree\' => $top_pages_to_exclude
);
wp_list_pages( $args );