WP_GET_NAV_MENU_ITEMS顺序不起作用

时间:2013-06-21 作者:Marián Zeke Šedaj

我正在使用此功能

$args = array (
   \'order\' => \'DESC\',
);

$items = wp_get_nav_menu_items( $custom_menu, $args );
然后,如果我将args更改为

$args = array (
   \'order\' => \'ASC\',
);
结果还是一样的。

有人有什么建议吗?

1 个回复
SO网友:Krzysiek Dróżdż

当您查看WordPress源代码时,您将找到原因。导航菜单第538行。php您将发现:

if ( ARRAY_A == $args[\'output\'] ) {
    $GLOBALS[\'_menu_item_sort_prop\'] = $args[\'output_key\'];
        usort($items, \'_sort_nav_menu_items\');
        $i = 1;
        foreach( $items as $k => $item ) {
            $items[$k]->$args[\'output_key\'] = $i++;
        }
}
我没有检查原因,但看起来排序不正确。要解决此问题,最简单的方法是更改输出类型以禁用此排序。

所以当你添加\'output\'=>OBJECT\'output\'=>ARRAY_N 对你的args来说,它应该工作得很好。

附:这甚至是已知的bug:http://core.trac.wordpress.org/ticket/15533

结束

相关推荐

Custom menus not showing

作为我上一次关于菜单的未解决查询的后续,这个问题已经进一步扩展。我的菜单没有打印代码中的任何地方。我正在注册菜单功能。php:add_action( \'after_setup_theme\', \'your_newtheme_setup\' ); if ( ! function_exists( \'your_newtheme_setup\' ) ) : function your_newtheme_setup() { if (