问题描述

可以将 current-menu-item 作为 php 变量吗?

我通过菜单项目 “我们支持的博物馆” 列出类别博物馆,所以我想要得到我们支持的博物馆,并将其显示在某个地方?

任何帮助赞赏!

最佳解决方案

这是可以通过过滤 wp_nav_menu_objects,这是检查哪个项目是当前菜单项的最简单的地方,因为 WordPress already added the classes for you

add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
    foreach ( $sorted_menu_items as $menu_item ) {
        if ( $menu_item->current ) {
            $GLOBALS['wpse16243_title'] = $menu_item->title;
            break;
        }
    }
    return $sorted_menu_items;
}

您现在可以使用这个新的全局变量,而不是正常的标题。简单的例子:

add_filter( 'single_cat_title', 'wpse16243_single_cat_title' );
function wpse16243_single_cat_title( $cat_title )
{
    if ( isset( $GLOBALS['wpse16243_title'] ) ) {
        return $GLOBALS['wpse16243_title'];
    }
    return $cat_title;
}

当然这只有在显示标题之前显示菜单才有用。如果你以前需要它 (也许在<title> 元素中),你应该是 first render the menu and then display it later

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。