我有一个显示页面的主菜单。所有页面都有相关联的子页面,但在菜单中,其中一些页面会自己显示,而没有子页面,而一些页面会显示为所有子页面的列表。菜单中的页面将根据为其指定的菜单顺序进行排序。(请参阅下面的代码)。
现在,我想在菜单中的特定位置添加一些类别,但不知道如何更好地进行添加。
是否可以使用wp\\U list\\U页面进行此操作?我喜欢我的代码的地方在于,每当为编程显示所有子页面的父页面添加子页面时,新添加的子页面将自动出现在网站的菜单中。与使用外观->菜单功能相反,用户需要在菜单中添加一个新创建的子页面,然后它才会出现在网站上。
我可能很容易把事情复杂化(!)唯一的方法是通过外观->菜单功能。我将非常感谢任何帮助和提示!
下面是我用来显示页面的代码,有些包含所有子页面,有些仅位于顶层。
//main nav: use wp_list_pages to display cirtain parent pages without any and with all child pages (a tree with parent)
$parents = array(5,7,17,61,19,25);
$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;
}
}
}
//add all the pages that need to be included without children
$parents = array_merge( (array)$parents, (array)array(31,23) );
//merge $parents and $children
$menu_pages = array_merge( (array)$parents, (array)$children );
$menu_pages_str = implode(",", $menu_pages);
?>
<ul class="menu wrap">
<?php wp_list_pages( "sort_column=menu_order&title_li=&include=$menu_pages_str" ); ?>
</ul>
最合适的回答,由SO网友:Dave Hunt 整理而成
wp\\u list\\u页面的功能有限,如果不重写函数本身,很难将类别注入到混合中。
使用内置菜单功能可能是最好的方式,因为您至少可以设置单独的项目类,允许您为顶级类别创建菜单标题(使标题项目使用“header”类或类似类)。
您还可以只使用get\\u pages()函数,该函数将返回一个页面数组,而不只是将它们打印到页面上。这将允许您在遍历数组时向数据的显示添加逻辑。