获取原始菜单项名称字符串,而不是标签

时间:2014-03-20 作者:blaise

我正在使用wp\\u get\\u nav\\u menu\\u项构建自定义分类法及其相关帖子的分层菜单,如下所示:

if( $locations = get_nav_menu_locations() && isset($locations[\'secondary\']) ):
  $menu = wp_get_nav_menu_object( $locations[\'secondary\'] );

  $menu_items = wp_get_nav_menu_items( $menu->term_id );

  foreach( (array) $menu_items as $key => $menu_item ):
    # access to $menu_item -> title;
    # access to $menu_item -> ID;
    # access to $menu_item -> object_id;
    # etc ...
  endforeach;
endif;
etc ...
假设我有一个菜单项service (这是自定义分类解决方案类别的一个术语),从外观->菜单中,我将其标签更改为\'Our Services\' 通过导航标签。在这种情况下$menu_item->title 返回“我们的服务”。我怎样才能得到“服务”呢?因为我在后续的WP\\u查询中需要它来获取属于自定义类别“服务”的所有帖子

谢谢

P、 如果你需要,我可以发布完整的代码。

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

您可以尝试使用get_term_by() 与菜单项的相关参数(即objectobject_id) :

foreach( (array) $menu_items as $key => $menu_item )
{
    // Match the menu items to your custom taxonomy:
    if( \'solutions_category\' === $menu_item->object )
    {
        // Fetch the corresponding term object:
        $term = get_term_by( \'term_id\', $menu_item->object_id, $menu_item->object );

        // Show the term name:
        echo $term->name;

        // Debug:
        // print_r( $term );
    }
}
请注意,如果不想针对特殊的分类法,可以替换

    // Match your custom taxonomy:
    if( \'solutions_category\' === $menu_item->object )
使用

    // Match only menu items of the type "taxonomy":
    if( \'taxonomy\' === $menu_item->type )
在哪里$menu_item->type 可以有如下值taxonomy, post_type, custom (链接),...

的价值$menu_item->type_label 还提供有关菜单项类型的详细信息。

希望这有帮助。

结束

相关推荐

从wp-Query获取数据,在循环之外&不更改url

我正在基于自定义分类法在wordpress上进行高级搜索。我已经被困72小时了,所以我希望能得到一些帮助或思考。。。步骤1——在js文件中,查询字符串如下所示:if (jQuery(\'#s\').val() == \'\'){ URL = \"/?genre=\" + genre + \'...other Stuff\' #content\'; }else{ URL = \"/?s=\"+searchQueryString+\"&genre=\" + genre +\'.