it-swarm.asia

كيف أحصل على صفحة الفئة الفردية الخاصة بـ wp_nav_menu لتسليط الضوء على الوالد؟

مع نظام wp_nav_menu الجديد ، من الممكن إضافة فئة كعنصر قائمة ، لذلك في المثال الخاص بي لدي فئة "أخبار" ، وهي عنصر قائمة فرعية من "حول".

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

تلتقط القائمة التي تميز CSS من القائمة الحالية الأصل وأسلاف القائمة الحالية ، بحيث عندما يكون في قسم القائمة الفرعية ، يتم تمييز عنصر القائمة في المستوى الأعلى (على سبيل المثال ، "حول") عندما أقوم بزيارة "الأخبار".

هذا جيد ، بغض النظر عن عندما أقوم بزيارة منشور في فئة "الأخبار" ، والذي يطابق is_single () و in_category ("news").

بقدر ما أستطيع رؤيته في Firebug ، يتم تطبيق "القائمة الحالية الأصل" و "سلف القائمة الحالية" على عنصر القائمة "الأخبار" ، ومع ذلك لا يتم تطبيقه على عنصر القائمة "حول" المستوى الأعلى.

هل هناك شيء أفتقده في إعداد قائمتي؟ لقد حاولت استخدام مشي مخصص ، لكن يبدو أن أسلاف القائمة الأولية لم يتم إعدادهم بشكل صحيح؟

يبدو أن الحل الوحيد (دون اللجوء إلى اختراق 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>

يحتوي هذا على فئات CSS current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor المرفقة بعنصر قائمة المستوى الأعلى. تعمل هذه الطريقة مع كل صفحة أخرى ، أو حتى عند عرض الفئة نفسها ، وليس فقط صفحة واحدة في فئة.

2
Dan Smart

هذا غير ممكن حاليًا إذا كان عنصر قائمة الصفحة هو أحد عناصر قائمة الفئات.

في المثال الخاص بك إذا كان About عبارة عن فئة و كانت الأخبار فئة فرعية ثم سيتم تعيين عنصر القائمة About (category):

  • الحالية، بعد سلف
  • الحالية، القائمة الوالدين
  • الحالية، بعد الأم
2
Chris_O

كنت أواجه نفس المشكلة أيضًا. لم أتمكن من العثور على اختراق php ، لذلك استخدمت جافا سكريبت واحد:

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 ، ثم قم بالإشارة إليه في رأس صفحتك واتصل بوظيفة findAncestor () على window.onload ، أي:

<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

لذلك ، لدي صفحة أمامية ثابتة ، وفئتان رئيسيتان + 1 ضمن هذه الفئات ، وصفحة أخرى. يقودها وورد 3.0.1 و 1.8 أطروحة ، وذلك باستخدام قائمة وورد بدلا من القائمة أطروحة.

لتسليط الضوء على الفئة الرئيسية التي استخدمتها: .current-post-acestor a {background: #FFFFFF؛}

(هذا يسلط الضوء على الفئة الرئيسية عندما على وظيفة واحدة)

لتسليط الضوء على الفئة الفرعية التي استخدمتها: .sub-menu .current-post-a سلف سلف {خلفية: # F0EEC2؛}

(هذا يسلط الضوء على فئة فرعية - تحت الفئة الرئيسية - عندما على وظيفة واحدة من فئة فرعية)

أود أن يكون كلا "الفئة الرئيسية" و "الفئة الفرعية" تسليط الضوء عليها.

ولكن لا يمكنني العثور على الخدعة.

بيير

0
user1060