没有“current_page_item”类被添加到顶级导航项

时间:2013-04-17 20:40:40

标签: wordpress-theming wordpress

如果您转到www.lindysez.com并点击顶级导航链接,您会注意到位置存在由较暗的背景指示(与悬停状态相同)。这适用于每个链接除了"提示&技术"

如果我看一下,我注意到" current_page_item"课程未被添加到"提示&成员资格的父母

  • 技术"转到http://www.lindysez.com/tips

    时的菜单项

    另外,奇怪的是,当在提示页面上," Blog"的父母

  • 导航项获得类" current_page_parent",这既不是预期的也不是期望的。从UI的角度来看,这是无害的,但可能表明潜在的问题可能是什么。

    任何人都知道为什么"提示&技术"菜单项目未获得" current_page_item"班级一旦被选中?


    更新:定向@ user2019515以下评论

    感谢你在这个方向上的推动,看起来我似乎可以创建一个可以解决这个问题的解决方法。然而,夫妻俩。

    1. 这会处理问题的症状而不是根。我想知道如何让wp添加" current_page_item"本地上课。知道是什么引起了这个吗?我认为这也可能与我所遇到的另一个涉及"提示"没有显示在RSS源中。我发布了另一个关于这个的问题,但没有看到任何答案...... https://stackoverflow.com/questions/15980846/custom-post-type-not-showing-up-in-wordpress-rss-feed

    2. 即使作为一种解决方法,我也要尽量避免使用依赖于硬编码菜单项的解决方案 - ##"。我的开发和生产服务器都有不同的ID#。我知道我可以解释这一点,但我希望有一个更好的,可扩展的解决方法。

    3. 您提供的代码对我不起作用,而不是我发现它有任何错误,也没有任何错误。似乎它应该工作,但不是没有。我甚至尝试创建一个非常简单的版本,可以为所有项添加一个类,但这也不会执行。这是代码。

      function add_class_to_wp_nav_menu($classes, $item)
      {
          $classes[] = 'classy-class';
          return $classes;
      }
      add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu', 10, 2);
      
    4. 非常感谢你的帮助!

  • 2 个答案:

    答案 0 :(得分:0)

    “提示”页面是一个帖子存档页面,它显示的是帖子而不是正常页面,这就是博客被突出显示的原因。您可以通过将以下自定义CSS添加到style.css文件来轻松解决此问题。

    .post-type-archive-tips .menu-item-23{
        background:url(images/nav-hover.png) repeat-x;
    }
    

    答案 1 :(得分:0)

    您需要循环播放菜单,默认情况下,当前页面类会添加到博客页面,因为最终会自定义帖子。

    //Change current_page_parent for custom post type
    function remove_parent_classes($class)
    {
      // check for current page classes, return false if they exist.
      return ($class == 'current_page_item' || $class == 'current_page_parent' || $class == 'current_page_ancestor'  || $class == 'current-menu-item') ? FALSE : TRUE;
    }
    
    function add_class_to_wp_nav_menu($classes)
    {
      switch (get_post_type()) {
        case 'portfolio':
          // we're viewing a custom post type, so remove the 'current_page_xxx and current-menu-item' from all menu items.
          $classes = array_filter($classes, "remove_parent_classes");
    
          // add the current page class to a specific menu item (replace ###).
          if (in_array('menu-item-14', $classes)) {
             $classes[] = 'current_page_parent';
          }
          break;
        case 'tips':
          // we're viewing a custom post type, so remove the 'current_page_xxx and current-menu-item' from all menu items.
          $classes = array_filter($classes, "remove_parent_classes");
    
          // add the current page class to a specific menu item (replace ###).
          if (in_array('menu-item-23', $classes)) {
             $classes[] = 'current_page_parent';
          }
          break;
      }
      return $classes;
    }
    add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu');
    

    该功能只有一种自定义帖子类型,但我相信你可以弄清楚如何添加更多。有任何问题,请随时发表评论! :)