質問: wp_nav_menuの単一カテゴリページに親をハイライト表示させるにはどうすればよいですか。 新しい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 &#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>つまり、 "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 &#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クラスがトップレベルメニュー項目に添付されています。これは、カテゴリ内の1ページだけではなく、他のすべてのページ、またはカテゴリ自体を表示している場合でも同様に機能します。
回答: 私も同じ問題を抱えていました。私は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>