我正在尝试获取当前菜单项ID。我发现一个线程使我走上了正确的轨道:How to get current-menu-item title as variable?
这是我在函数中使用的代码。php文件:
add_filter( \'wp_nav_menu_objects\', \'current_wp_nav_menu_object\' );
function current_wp_nav_menu_object( $sorted_menu_items )
{
foreach ( $sorted_menu_items as $menu_item ) {
if ( $menu_item->current ) {
$GLOBALS[\'current_menu_title\'] = $menu_item->title;
$_SESSION[\'current_menu_title\'] = $menu_item->title;
break;
}
}
return $sorted_menu_items;
}
但有一个恼人的问题。数据存储始终是最后单击的菜单项,而不是当前单击的菜单项。
让我们假设我有以下菜单项:
第1项第2项第3项第4项(我使用echo $_SESSION[\'current_menu_title\']
查看结果)
按以下顺序单击菜单项,会得到以下结果:
Item 1 -> no output
Item 2 -> outputs Item 1
Item 4 -> outputs Item 2
Item 1 -> outputs Item 4
为什么当前单击的菜单项没有输出?
SO网友:soulseekah
据我所知,菜单对象没有“current”属性,是吗?至少我没见过。因此,您可以通过比较当前的帖子/页面ID来接近您的要求(get_the_ID()
) 带项目\'object_id
财产,当他们匹配时-轰!您获得了当前选定的菜单。
function wpse25992_store_current_id( $items, $menu, $args ) {
foreach ( $items as $key => $item ) {
// this is the currently displayed object
if ( $item->object_id == get_the_ID() )
$_SESSION[\'current_menu_title\'] = $item->title;
}
return $items;
}
add_filter( \'wp_get_nav_menu_items\', \'wpse31748_exclude_menu_items\', null, 3 );