问题描述
可以将 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。