如何获取当前页面菜单项名称而不是完整菜单项列表

时间:2015-09-14 作者:cmsdeployed

我想建立一个菜单结构,在这里你只能像在这个网站上一样看到当前页面的菜单项http://www.bigspaceship.com/services/

我四处搜索,目前为止我有以下功能

<?php
$menu_items = wp_get_nav_menu_items( \'main-menu\' );
foreach( $menu_items as $item ) {
  print_r( $item ) ; // see what you can work with
  // carry on
}
如何实际只打印当前页面的菜单项名称?我仍然希望控制仪表板中的菜单项,这意味着我希望能够更改管理中每个菜单的名称,并动态更新它们。

谢谢你的帮助。

1 个回复
SO网友:Milo

在每个菜单项中,object_id 保存菜单项引用的任何对象的ID。这将是一个post/page/CPT/term ID。如果是自定义链接,则ID引用自身。(如果您想知道它是什么类型的对象,object 包含。)

  • get_queried_object_id() 将为您提供当前页面的ID。

    我们可以使用API函数wp_filter_object_list()要筛选出任何菜单项object_id 与查询的对象不匹配。

    然后剩下一个包含单个元素的数组,所以我们使用phpcurrent 因此$this_item 现在只包含Matching菜单项对象。

    最后,title 保存我们为菜单项指定的名称。

  • $menu_items = wp_get_nav_menu_items( \'main-menu\' );
    $this_item = current( wp_filter_object_list( $menu_items, array( \'object_id\' => get_queried_object_id() ) ) );
    echo $this_item->title;
    
    注意-我没有测试这个,所以希望它能工作

    相关推荐

    Force pretty permalinks?

    我正在构建一个插件,该插件将用于单个站点,并依赖于add_rewrite_rule 要工作,需要打开永久链接。打开它们并不困难,因为它只是一个站点,但我担心其中一个管理员可能会在不知道自己在做什么的情况下关闭它,并破坏该站点。如何以编程方式强制保持漂亮的永久链接?