0

如果您访问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 回答 2

    0

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

    .post-type-archive-tips .menu-item-23{
        background:url(images/nav-hover.png) repeat-x;
    }
    
    于 2013-04-18T17:01:36.430 回答
    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');
    

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

    于 2013-04-19T15:08:02.783 回答