按菜单顺序对wp_NAV_MENU()排序

时间:2012-07-18 作者:INT

我为后端制作了一个自定义菜单处理程序,根据CMS Page Order.

现在的问题是,除了默认的wp\\u nav\\u菜单之外,似乎不可能以任何其他方式对wp\\u nav\\u菜单进行排序,这真的是真的吗?

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

nav\\U menu\\u项目已按menu\\u顺序排序

进入外观时->;菜单和排列顺序菜单更新每个菜单项的菜单顺序。

要更改显示菜单的查询中的orderby参数,可以使用pre\\u get\\u posts对其进行更改。示例:

add_action( \'pre_get_posts\', \'wpse_sort_nav\' );
function wpse_sort_nav( $query ) {
        if ( $query->is_main_query() && get_query_var( \'post_type\' ) == \'nav_menu_item\' )
            $query->set( \'orderby\', \'ID\' );
    }
ID和menu\\u order是使用默认post表进行排序的唯一实际选项。没有标题,post\\u名称与ID相同。

您可以使用存储在每个nav\\U菜单项中的元数据向pre\\u get\\u posts过滤器添加其他参数。

导航菜单元数据:

_menu\\u menu\\u item\\u parent
\\u menu\\u item\\u type
\\u menu\\u object\\u id
\\u menu\\u item\\u object
\\u menu\\u item\\u target
\\u menu\\u item\\u classes\\u menu item\\u xfn
\\u menu item\\u url

结束

相关推荐

Admin menus and submenus

我为管理员创建了一个选项页面,并将其显示为顶级菜单->add_menu_page($themename, $themename, \'administrator\', basename(__FILE__), \'mytheme_admin\');我想在我创建的顶级菜单下添加一个子菜单,以显示完全相同的页面(显示为子菜单,但当用户单击顶级菜单时也会打开此页面)。此外,我不知道如何在这个顶级菜单下添加我创建的另一个主题页面。在这里询问之前,我已经阅读了wordpress文档,但无法完成。非常感谢。