新しいwp_nav_menuシステムでは、メニュー項目としてカテゴリを追加することが可能です。そのため、私の例では 'news'カテゴリがあります。これは 'About'のサブメニュー項目です。
About (page)
--news (category)
--history (page)
--contact us (page)
CSSで強調表示されているメニューはcurrent-menu-parentとcurrent-menu-ancestorから選択するので、サブメニューセクションにいるときは、「news」にアクセスするとトップレベルのメニュー項目(「About」など)が強調表示されます。
Is_single()とin_category( 'news')に一致する 'news'カテゴリの投稿にアクセスしたときは別として、これは問題なく動作します。
Firebugで見ることができる限りでは、 'current-menu-parent'と 'current-menu-ancestor'は 'news'メニュー項目に適用されますが、 'About'トップレベルメニュー項目には適用されません。
メニューを設定する際に足りないものはありますか?カスタムウォーカーを使用してみましたが、最初のメニューの祖先が正しく設定されていないようです。
私の唯一の解決策は(厄介なJQueryハックに頼ることなく)ニュースの「カテゴリ」を指すのではなく、ニュースの投稿を照会する「ニュース」ページを作成することです。
何か案は?
ありがとう、ダン
コードサンプルで更新2010/09/09
現在の方法では、ニュースカテゴリの単一のページを表示しています 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 & 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>
つまり、 "About Us"には、現在表示されているページの親であることを示すための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 & 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クラスがトップレベルメニュー項目に添付されています。これは、カテゴリ内の1ページだけではなく、他のすべてのページ、またはカテゴリ自体を表示している場合でも同様に機能します。
現在のところ、ページメニュー項目がカテゴリメニュー項目の親である場合、これは不可能です。
あなたの例では、についてはカテゴリであり、ニュースは子カテゴリでした About(category)メニュー項目が割り当てられます。
私も同じ問題を抱えていました。私はphpハックを見つけることができなかったので、私は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>
私は解決策に近いので、あなたはこのスレッドフォーラムが非常に有益であると思うかもしれません。
ピエール
私はChris_Oに同意します
だから、私は静的なフロントページ、それらの下に2つのメインカテゴリと1つのサブカテゴリ、そして別のページを持っています。 Wordpress 3.0.1およびThesis 1.8によって駆動され、Thesisメニューの代わりにWordpressメニューを使用します。
私が使用した主なカテゴリーを強調するために:current-post-ancestor a {background:#FFFFFF;}
(これは単一の投稿のときに主なカテゴリを強調表示します)
私が使用したサブカテゴリを強調するために:sub-menu .current-post-ancestor a {background:#F0EEC2;}
(これは、サブカテゴリの単一の投稿にある場合、サブカテゴリ - メインカテゴリの下に - 強調表示されます)
「メインカテゴリ」と「サブカテゴリ」の両方にしたい強調表示されます。
しかし、私はトリックを見つけることができません。
ピエール