从特定菜单中获取当前菜单项ID

时间:2016-07-19 作者:user3199063

我在试着current-menu-item-id 在任何页面中。我用过this solution, 这使我非常接近解决方案。

我的问题是,下面的函数正在遍历页面上的所有菜单,而不仅仅是我希望它遍历的一个特定菜单:

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->ID;  
        }  
    }  
    return $sorted_menu_items;  
}  
。。。这意味着,如果您在菜单中多次链接到同一页面,则此函数可能会返回current-menu-item-id 从错误的菜单。

是否有任何方法可以将此函数限制为only 浏览特定菜单,而不是所有菜单?我试图在变量/参数中传递特定的菜单项$sorted_menu_items, 但这似乎行不通。

2 个回复
SO网友:user3199063

这就是我问题的解决方案:

然后,我要做的是使用javascript将单击的锚存储在cookie中,并在加载新页面时读取它$_服务器[\'HTTP\\U REFERER\']在此处不可靠Luis Sanz 7月19日12:33

SO网友:Krzysztof Grabania

您可以将第二个参数传递给存储菜单名的函数。必须进行的更改:

add_filter( \'wp_nav_menu_objects\', \'wpse16243_wp_nav_menu_objects\', 10, 2 );  
function wpse16243_wp_nav_menu_objects( $sorted_menu_items, $args )
在函数中,您将通过$args[\'menu\'] 所以

if ( $menu_item->current ) { 
应更改为

if ( $menu_item->current && $args[\'menu\'] == \'name_of_menu_you_want_to_search\' ) { 

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL