web-dev-qa-db-ja.com

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ページだけではなく、他のすべてのページ、またはカテゴリ自体を表示している場合でも同様に機能します。

2
Dan Smart

現在のところ、ページメニュー項目がカテゴリメニュー項目の親である場合、これは不可能です。

あなたの例では、についてはカテゴリであり、ニュースは子カテゴリでした About(category)メニュー項目が割り当てられます。

  • 現在のポストの先祖
  • 現在のメニューの親
  • 現在のポストの親
2
Chris_O

私も同じ問題を抱えていました。私は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>
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によって駆動され、Thesisメニューの代わりにWordpressメニューを使用します。

私が使用した主なカテゴリーを強調するために:current-post-ancestor a {background:#FFFFFF;}

(これは単一の投稿のときに主なカテゴリを強調表示します)

私が使用したサブカテゴリを強調するために:sub-menu .current-post-ancestor a {background:#F0EEC2;}

(これは、サブカテゴリの単一の投稿にある場合、サブカテゴリ - メインカテゴリの下に - 強調表示されます)

「メインカテゴリ」「サブカテゴリ」の両方にしたい強調表示されます。

しかし、私はトリックを見つけることができません。

ピエール

0
user1060