WordPress获取或设置活动菜单类

时间:2013-09-05 作者:Ajay Patel

如何在wordpress中获得活动菜单类,我想在一个插件中获得它来更改菜单样式。

我只是想澄清一下,我不想要活动菜单元素类。

<ul id="menu-scroll" class="nav-menu">
<li id="menu-item-1461" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1461"><a href="#home">Home</a></li>
<li id="menu-item-1462" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1462"><a href="#about">About</a></li>
<li id="menu-item-1463" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1463"><a href="#services">Services</a></li>
<li id="menu-item-1466" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1466"><a href="#team">Team</a></li>
<li id="menu-item-1468" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1468"><a href="#blog">Blog</a></li>
<li id="menu-item-1467" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1467"><a href="#contact">Contact</a></li>
</ul>
在这里,我想得到“导航菜单”,或者我想设置新的类,如

<ul id="menu-scroll" class="my-nav-menu">
但不使用主题文件,我想为所有活动的主题使用它。

提前谢谢你,阿杰

2 个回复
SO网友:s_ha_dum

使用过滤器相对容易做到这一点。

function alter_menu_class_wpse_113022($args) {
  // var_dump($args); // debug
  $args[\'menu_class\'] = \'my-nav-menu\';
  return $args;
}
add_filter(\'wp_nav_menu_args\',\'alter_menu_class_wpse_113022\');
这将使这条线:

<ul id="menu-scroll" class="nav-menu">
看起来像这样:

<ul id="menu-scroll" class="my-nav-menu">
但这可能会导致主题严重断裂。如果某个主题使用该类将样式应用于菜单(这是一件合理的事情),那么您已经破坏了所有样式。受影响的菜单看起来很糟糕,甚至可能无法运行。This is a very, very bad idea. 请不要这样做。

SO网友:Vinod Dalvi

这是以下将类添加到nav菜单包装器的更安全的方法,因为它不会覆盖现有类。

function append_new_menu_class($args) {
  $args[\'menu_class\'] = $args[\'menu_class\'].\' my-nav-menu\';
  return $args;
}
add_filter(\'wp_nav_menu_args\',\'append_new_menu_class\');
以下代码将自定义类添加到nav menu ul tag

function add_menuclass( $ulclass ) {
  return preg_replace( \'/<ul>/\', \'<ul class="custom-class">\', $ulclass, 1 );
}
add_filter( \'wp_page_menu\', \'add_menuclass\' );

结束

相关推荐

Primary and secondary menus

我试图使主菜单上的每个选项卡都链接到次菜单,这样实际上,每个主选项卡都会指向次菜单中的一组选项卡,而不是保持静态。我希望你能帮助我,我不是一个高级WP用户,所以可以使用简单的术语。更新我已经添加了代码,但它已经显示在我的网页和仪表板上,所以我一定是弄错了,所以我将其粘贴在下面,以便您可以看到。我不知道如何找到主弹头,但我想这是我在主弹头上添加的内容。function km_dynamic_secondary_menu_reg() { global $km_nav_menus;