Javascript 在wordpress中,如何将.active类添加到父导航链接(如果有)';s子导航链接是否处于活动状态?

Javascript 在wordpress中,如何将.active类添加到父导航链接(如果有)';s子导航链接是否处于活动状态?,javascript,jquery,wordpress,twitter-bootstrap,Javascript,Jquery,Wordpress,Twitter Bootstrap,首先,我不是一个开发者,我只是在自学。我对php和javascript还没有深入的了解 我正在开发我自己的WordPress网站作为测试主题和学习场所。我在我的自定义子主题中使用了twitter引导,它有一个名为320Press WP引导的父主题。我在这方面没有问题。只在它的php端 我现在面临一个关于我的顶部导航栏菜单的问题。我无法触发所需菜单项的.active类 使用添加菜单小部件从管理面板创建菜单。菜单的父项称为BLOG,其子项是BLOG的类别。基本上,博客菜单是我顶部导航栏菜单的一个子项

首先,我不是一个开发者,我只是在自学。我对php和javascript还没有深入的了解

我正在开发我自己的WordPress网站作为测试主题和学习场所。我在我的自定义子主题中使用了twitter引导,它有一个名为320Press WP引导的父主题。我在这方面没有问题。只在它的php端

我现在面临一个关于我的顶部导航栏菜单的问题。我无法触发所需菜单项的.active类

使用添加菜单小部件从管理面板创建菜单。菜单的父项称为BLOG,其子项是BLOG的类别。基本上,博客菜单是我顶部导航栏菜单的一个子项。我的顶部导航栏菜单,包含主页、博客和信息菜单。点击博客菜单将触发主题的下拉菜单功能,并显示可用的博客类别。我已将永久链接设置设置为自定义结构,如下所示

我已经创建了一个静态页面并将其设置为我的主页,活动类正在处理该url,即我的根域。我的主题的function.php通过针对当前菜单项类在其上添加一个.active类。但是当我导航到我的博客部分(也是一个自定义页面)时,活动类不会添加到导航菜单“BLOG”中。菜单“博客”是通过管理员菜单小部件添加的

一位用户建议在服务器端解决这个问题,所以我想他是指添加一些php代码

但我还没有这个技能。但是wordpress提供了codex,我可能只需要复制粘贴一些代码并对其进行调整。但是为了调整它,我仍然需要一些php技能。我在网上搜索了一些类似的问题,找到了一些有效的解决方案,但我不知道如何实施它来解决我的具体问题

我在这里发现了一些类似的问题:

但我不知道如何实施它

我还从wordpress论坛上发现,我用我的价值观替换了这些价值观,但它不起作用

以下是我的WordPress导航菜单的外观:

<div class="nav-collapse collapse">
    <ul class="nav">
        <li class="cateogry-1">Home</a></li>
        <li class="this-shall-become-active"><a data-toggle="dropdown" class="dropdown-toggle" title="blog">Blog<b class="caret"></b></a>
            <ul class="dropdown-menu">
                <li class="category-1"><a href="../blog/cat1">Blog Category 1</a></li>
                <li class="category-2"><a href="../blog/cat2">Blog Category 2</a></li>
            </ul>
        </li>
        <li class="somelink1"><a href="#">Some Link 1</a></li>
        <li class="somelink2" ><a href="#">Some Link 2</a></li>
    </ul>                           
</div>
它将类名添加到父级
  • ,现在我可以进一步将其作为目标并添加.active类名


    现在,我需要代码将.active类添加到菜单父项。

    您应该能够使用location.pathname在加载时操作DOM,即

    $(document).ready(function(){
       var currentLocation = location.pathname;
       if (currentLocation == "/test/1"){
          $("#page1").addClass("active");
       }
    });
    

    希望有帮助。

    您应该能够使用location.pathname在加载时操作DOM,即

    $(document).ready(function(){
       var currentLocation = location.pathname;
       if (currentLocation == "/test/1"){
          $("#page1").addClass("active");
       }
    });
    

    希望能有所帮助。

    经过密集的反复试验和研究。我终于找到了解决我具体问题的办法

    这个解决方案在我的情况下奏效了。我将下面的代码粘贴到我的子主题的function.php中

    add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
    function special_nav_class($classes, $item){
             if( in_array('current-menu-parent', $classes) ){
                             $classes[] = 'active ';
             }
             return $classes;
    }
    
    以上代码取自此

    我对它做了一些修改以满足我的需要

    下面是工作结果的屏幕截图


    经过密集的反复试验和研究。我终于找到了解决我具体问题的办法

    这个解决方案在我的情况下奏效了。我将下面的代码粘贴到我的子主题的function.php中

    add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
    function special_nav_class($classes, $item){
             if( in_array('current-menu-parent', $classes) ){
                             $classes[] = 'active ';
             }
             return $classes;
    }
    
    以上代码取自此

    我对它做了一些修改以满足我的需要

    下面是工作结果的屏幕截图


    根据您发布的代码,Blog的
  • 确实有.active类。class=“blog section menu active”我是否误解了这个问题?@Chris这是我的html标记,仅供说明。应根据url动态加载.active类。ruedamanuel的答案仅在父li中有效。所以它还没有修复。我想让它和李的一起工作。因此,blog部分下的任何页面都将激活并向父li添加一个活动类,即blog(mysite.com/blog)url。考虑到相对的
    href
    s,在JavaScript中这样做对您来说将是一场噩梦。在服务器端执行此操作确实更有意义。@DavidJohnSmith正如我前面提到的,我曾想过使用php或javascript。如果有人能在服务器端帮助我修复它,那将非常有用。根据您发布的代码,Blog的
  • 确实有.active类。class=“blog section menu active”我是否误解了这个问题?@Chris这是我的html标记,仅供说明。应根据url动态加载.active类。ruedamanuel的答案仅在父li中有效。所以它还没有修复。我想让它和李的一起工作。因此,blog部分下的任何页面都将激活并向父li添加一个活动类,即blog(mysite.com/blog)url。考虑到相对的
    href
    s,在JavaScript中这样做对您来说将是一场噩梦。在服务器端执行此操作确实更有意义。@DavidJohnSmith正如我前面提到的,我想使用php或javascript。如果有人可以跳进来帮我在服务器端修复它,那将非常有用。太好了!但是我想在blog中添加活动类,并在blog链接中添加所有url。像这样,mysite.com/blog,mysite.com/blog/somepage2,mysite.com/blog/somepage2@GaryDapogi你的意思是你博客域名中的所有URL吗?@tr33hous是的,博客。mysite.com/blog/othermorepath。不仅是博客路径,还有mysite.com的所有子路径。例如,mysite.com/about-us/somemorepath。从我的wordpress管理员添加静态页面,然后将其添加到菜单没有激活的链接功能。很好!但是我想在blog中添加活动类,并在blog链接中添加所有url。像这样,mysite.com/blog,mysite.com/blog/somepage2,mysite.com/blog/somepage2@GaryDapogi你的意思是你博客域名中的所有URL吗?@tr33hous是的,博客。mysite.com/blog/othermorepath。不仅是博客路径,还有mysite.com的所有子路径。例如,mysite.com/about-us/somemorepath。从我的wordpress管理员添加静态页面,然后再将其添加到菜单中,这并不意味着