当前位置: 首页 > 知识库问答 >
问题:

需要添加'active'类到自定义WordPress导航菜单

习旻
2023-03-14

我正在使用WordPress中的内置导航菜单创建自己的超级菜单。为标准菜单项和具有超大菜单的菜单项显示不同的代码非常有用。但是我希望能够引用活动菜单项,并将类活动添加到该列表项中。

我只是不确定,下面的代码,我需要把什么放在哪里?

// if there are items in the primary menu
if ( $items = wp_get_nav_menu_items( $menu->name ) ) {
// loop through all menu items to display their content
foreach ( $items as $item ) {
// if the current item is not a top level item, skip it
if ($item->menu_item_parent != 0) {
    continue;
}

// get the ID of the current nav item
$curNavItemID = $item->ID;
// get the custom classes for the item
// (determined within the WordPress Appearance > Menu section)
$classList = implode(" ", $item->classes);
    echo "<li class=\"nav-item {$classList}\">";                     
if ( in_array('has-mega-menu', $item->classes)) {
    echo "<a class=\"nav-link dropdown-toggle\" href=\"{$item->url}\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">{$item->title}</a>\n";
}
else  {
    echo "<a class=\"nav-link\" href=\"{$item->url}\">{$item->title}</a>";
}

[已编辑]

我知道这一行之后需要添加一些内容

$classList = implode(" ", $item->classes);
echo "<li class=\"nav-item {$classList}\">";                     

引用当前页面的内容

if ( [ ???? current page or current menu ???? ] 
echo "<li class=\"nav-item active {$classList}\">";

如何引用当前页面?

或者我如何将标准WordPress类添加到所有菜单项中,然后我可以在CSS文件中引用它。

我找到了解决办法。

我加了这个

// get the current page URL
$actual_link = ( isset( $_SERVER['HTTPS'] ) ? "https" : "http" ) . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

之前

// get the ID of the current nav item
$curNavItemID = $item->ID;

然后通过改变这一行来引用它

echo "<li class=\"nav-item {$classList}\">";

对此

echo "<li class=\"nav-item ";
if ( $actual_link == $item->url ) {
echo 'active';
}
echo " {$classList}\">";

“active”类现在被添加到其URL与浏览器窗口的URL匹配的任何菜单项中。ie:“当前页面”。

我相信有一种更优雅的方法可以做到这一点,但这似乎是我所需要的。

共有1个答案

狄溪叠
2023-03-14

将其添加到css文件中

ul.nav-menu li.current-menu-item > a {
    color: #f7931d !important;
}
li.current-menu-parent >a, .current-menu-item >a {
    color: #f7931d !important;
}
 类似资料:
  • 我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re

  • 我有一个WordPress菜单,其中有一些菜单项是我通过标准(拖放)WordPress管理菜单功能添加的。最近,我不得不在菜单中添加另一项,以生成动态href链接。我在函数中使用以下代码实现了这一点。php文件: //将“我的个人资料”菜单项动态添加到“成员”菜单(根据当前登录的用户生成用户名) add_filter(wp_nav_menu_items、add_profilelink_in_men

  • 我需要你的帮助我的html中有导航菜单我想在我将html传输到Wordpress时准确地获取它们,但是当我将html传输到Wordpress时,它看起来不一样。Wordpress无法阅读我的导航栏菜单CSS,为什么?你能帮助我吗?请看我想说的图片。 以下是我的导航菜单html代码和css:

  • 我向每个Wordpress菜单项添加了类,但它们没有出现在代码中。 我的菜单: 我的职能。php包括 所以我有 但是没有我在Wordpress管理菜单中添加的任何类。为什么呢?

  • 我一直在开发自定义WordPress rest APIendpoint。目标是创建一个WordPress自定义路由。在这个路由中,我想获取类别Id并将其转换为类别名称。我已经编写了这个函数,但它返回的类别Id为空。该函数只需获取WordPress的类别并注册路由。如何获取所有类别Id并将类别Id转换为类别名称。

  • 我只想在我的wordpress主题菜单栏中添加一个快捷键,用于处理功能。 我尝试了在菜单中使用“