it-swarm.cn

如何获取我的wp_nav_menu单一类别页面以突出显示父级?

使用新的wp_nav_menu系统,可以将类别添加为菜单项,因此在我的示例中,我有一个“新闻”类别,这是“关于”的子菜单项。

About (page)
--news (category)
--history (page)
--contact us (page)

突出显示CSS的菜单从当前菜单 - 父级和当前菜单 - 祖先中选取,因此当我在子菜单部分时,当我访问“新闻”时,顶级菜单项(例如“关于”)会突出显示。

除了我在“新闻”类别中访问与is_single()和in_category('news')匹配的帖子时,这种方法很好。

据我所知,在Firebug中,'current-menu-parent'和'current-menu-ancestor'被应用于'news'菜单项,但它不适用于'About'顶级菜单项。

在设置我的菜单时是否有一些我缺少的东西?我尝试过使用自定义助行器,但似乎初始菜单祖先没有正确设置?

似乎我唯一的解决方案(不使用令人讨厌的JQuery黑客)是创建一个查询新闻帖子的“新闻”页面,而不是指向新闻“类别”。

有任何想法吗?

谢谢,丹

更新代码示例09/09/2010

目前的方式,查看新闻类别中的单个页面 http://www.example.com/2010/09/top-news-did-you-know/

<li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-28"><a href="http://www.example.com/about/">About Us</a>
<ul class="sub-menu">
<li id="menu-item-71" class="menu-item menu-item-type-taxonomy"><a href="http://www.example.com/category/events/">Events</a></li>
<li id="menu-item-70" class="menu-item menu-item-type-taxonomy current-post-ancestor current-menu-parent current-post-parent current-menu-parent"><a href="http://www.example.com/category/news/">News &#038; views</a></li>
<li id="menu-item-88" class="menu-item menu-item-type-post_type"><a href="http://www.example.com/contact-us/">Contact Us</a></li>
</ul></li>

所以你看到“关于我们”没有任何CSS类来表明它是当前查看页面的父级。

我认为它应该如何工作(说实话,如果不这样做,那么由于缺乏实现,这是一个错误):

<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-28"><a href="http://www.example.com/about/">About Us</a>
<ul class="sub-menu">
<li id="menu-item-71" class="menu-item menu-item-type-taxonomy"><a href="http://www.example.com/category/events/">Events</a></li>
<li id="menu-item-70" class="menu-item menu-item-type-taxonomy current-post-ancestor current-menu-parent current-post-parent current-menu-parent"><a href="http://www.example.com/category/news/">News &#038; views</a></li>
<li id="menu-item-88" class="menu-item menu-item-type-post_type"><a href="http://www.example.com/contact-us/">Contact Us</a></li>
</ul></li>

这有current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor CSS类附加到顶级菜单项。它以这种方式适用于每个其他页面,甚至在查看类别本身时,也不是一个类别中的单个页面。

2
Dan Smart

目前,如果页面菜单项是类别菜单项的父项,则这是不可能的。

在你的例子中ifAbout是一个类别新闻是子类别然后将分配关于(类别)菜单项:

  • 电流后始祖
  • 当前菜单父
  • 目前,后父
2
Chris_O

我也有同样的问题。我找不到一个php hack,所以我使用了一个javascript:

function findAncestor(){
    var currentParentLi = document.getElementsByClassName("current-menu-parent");
    if(currentParentLi){
        var currentAncestorLi = currentParentLi[0].parentNode.parentNode;
        if(currentAncestorLi && currentAncestorLi.tagName=="LI"){
            currentAncestorLi.className += " current-menu-ancestor";
        }
    }
}

将上面的代码放在.js文件中,然后在页面的头部引用它并调用window.onload上的findAncestor()函数,即:

<script type="text/javascript">
<!--
window.onload = function() {
    findAncestor()
}
//-->
</script>
1
Meredith Dodge

你可能会发现这个线程论坛非常有用,因为我更接近解决方案。

http://diythemes.com/forums/showthread.php?39258-Category-highlighting-for-single-post-%28-wp-menu-%29

皮埃尔

0
user1060

我同意Chris_O

所以,我有一个静态首页,2个主要类别+ 1个子类别,另一个页面。在Wordpress 3.0.1和Thesis 1.8的驱动下,使用Wordpress菜单代替Thesis菜单。

为了突出我使用的主要类别:.current-post-ancestor a {background:#FFFFFF;}

(这突出了单个帖子时的主要类别)

为突出显示我使用的子类别:.sub-menu .current-post-ancestor a {background:#F0EEC2;}

(这突出了子类别 - 在主要类别下 - 当在子类别的单个帖子上时)

我想两个“主要类别”“子类别”是突出显示。

但我找不到诀窍。

皮埃尔

0
user1060