动态设置导航的活动状态

我似乎经常遇到这个问题,永远找不到解决方案。 我有一个带顶部导航的Wordpress网站。 由于这是在我的header.php中,并在所有页面上使用,我无法对每个页面的活动菜单状态进行硬编码。

如何动态设置激活状态以适用于每个页面?

这是我目前的导航代码:

我已经设置了一个名为“active”的CSS类,它具有我的活动状态属性。 理想情况下,我正在寻找的是当你在“关于”页面(或任何其他页面)时,我为活动状态创建的类将被附加到当前的li类。

例:

 
  • <a href="https://stackoverflow.com/questions/15005731/set-active-state-on-navigation-dynamically//about">About
  • 谢谢!

    你可以试试一下

     
  • About
  • 你可以这样做:

    这会将active类添加到 ,其中包含来自url的page

     $(function(){ var url = window.location.href; var page = url.substr(url.lastIndexOf('/')+1); $('.cemenu a[href*="'+page+'"]').addClass('active'); }); 

    如果你想将类添加到其父li,则将最后一行替换为this,css类应如下所示:

     .active a{ css properties for active li's a } // using closest $('.cemenu a[href*="'+page+'"]').closest('li').addClass('active'); 

    要么

     // using parent $('.cemenu a[href*="'+page+'"]').parent('li').addClass('active'); 

    只是试试这里的小提琴

    首先,有一个css伪类为样式化“活动”链接做好准备:

     a:active {css} 

    根据您的情况,您必须将此类添加到样式中:

     .active a, a:active {css} 

    但是你的需求在PHP方面似乎比CSS更多,也许其他人会帮助你完成这一部分。 将有一个jQuery的javascript解决方案,找到实际的位置然后注入一个css选择器到适当的元素。

    查看本文和另一篇关于wordpress的文章。 它会帮助你。

    Stack Overflow参考:

    • 如何在Wordpress中将每个菜单上的不同项目定位到活动状态
    • 如何在wordpress中添加活动状态和图标wp_nav_menu()
    • 在Wordpress动态菜单中松开导航活动状态
    • 谷歌搜索

    尝试这样的事情:

      'About Us', 'blog' => 'blog') ?> 
      $page): ?> > ">

    可能值得研究使用诸如get_page_link之类的wordpres函数,这比使用Server super global更好,因为它不是很好。 如果你在一个文件夹而不是文档根目录中有wordpress,这也会失败,这只是一个简单的例子让你开始:)

    你可以使用preg_replace()来添加class="active"如下所示:

     ob_start(); echo ''; $output = ob_get_clean(); $pattern = '~
  • ~'; $replacement = '
  • '; echo preg_replace($pattern, $replacement, $output);
  • 你可以这样试试

     
  • Home
  • Contact
  • 然后在您的主页上

     $this_page='Home'; 

    并在您的联系页面中

     $this_page='Contact';