ORDERBY MENU_ORDER不工作;菜单按发布日期排序

时间:2018-03-23 作者:Rubenxfd

我在管理页面中制作了一个菜单,顺序如下:

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
我知道我可以更改发布日期,但这可能会在将来发生冲突。

我如何像在导航栏中一样命令这些孩子?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

menu_order 并不意味着它在任何给定的自定义菜单中的使用顺序。它表示按此框中输入的“订单”属性排序:

enter image description here

与直觉相反,此属性保存到menu_order 中的列wp_posts 表,这就是orderby 参数值为menu_order.

我不确定,因为当时我没有使用WordPress,但我相信这是WordPress没有可定制菜单的时代遗留下来的,输出页面菜单的唯一方法是wp_list_pages() 函数,该函数在1.5.0 (wp_nav_menu() 直到3.0.0). 当这是执行菜单的方式时,使用此属性对菜单项进行排序。

结束

相关推荐

如何在‘Foreach’循环之前对模板函数完成的查询进行排序(Orderby)?

在foreach循环的输出开始之前,如何对模板函数执行的查询中保留的元素数组进行排序?我想按帖子标题对我的元素进行排序。这是我的代码:<?php $show_subproperties = apushome_get_config(\'show_property_sub\', true); if (!$show_subproperties) { return; } $post = get_post(); $author_id = $post-&g