我在管理页面中制作了一个菜单,顺序如下:
parent
- child 1
- child 2
- child 3
parent
- child 1
- child 2
- child 3
parent
- child 1
- child 2
- child 3
当我用以下代码将它们加载到导航栏中时,效果很好:
wp_nav_menu( array(
\'theme_location\' => \'menu-1\',
\'menu_id\' => \'primary-menu\',
\'menu_class\' => \'top-menu\',
) );
但是,我想根据页面的父级加载页面上的特定菜单。我的做法如下:
<?php
$children = get_posts( array( \'post_parent\' => $parent, \'post_type\' => \'page\', \'numberposts\' => 9, \'orderby\' => \'menu_order\', \'order\' => \'ASC\'));
?>
但显示时,会根据发布日期显示菜单:
- child 2
- child 1
- child 3
我知道我可以更改发布日期,但这可能会在将来发生冲突。
我如何像在导航栏中一样命令这些孩子?
最合适的回答,由SO网友:Jacob Peattie 整理而成
menu_order
并不意味着它在任何给定的自定义菜单中的使用顺序。它表示按此框中输入的“订单”属性排序:
与直觉相反,此属性保存到
menu_order
中的列
wp_posts
表,这就是
orderby
参数值为
menu_order
.
我不确定,因为当时我没有使用WordPress,但我相信这是WordPress没有可定制菜单的时代遗留下来的,输出页面菜单的唯一方法是wp_list_pages()
函数,该函数在1.5.0
(wp_nav_menu()
直到3.0.0
). 当这是执行菜单的方式时,使用此属性对菜单项进行排序。