यहां सुझाए गए समाधानों का मेरा अनुकूलित/विस्तारित संस्करण है, जो कि काफी पूर्ण स्वचालित है। कोई अतिरिक्त सीएसएस या मेनू विशेषताओं की आवश्यकता नहीं है।
यह संस्करण गतिशील रूप से कस्टम पोस्ट प्रकारों की एक सूची प्राप्त करता है और यदि वर्तमान पोस्ट प्रकार एक कस्टम पोस्ट प्रकार है, तो यह सभी मेनू आइटमों से 'current_page_parent' वर्ग को हटा देता है।
इसके अलावा यह प्रत्येक मेनू आइटम को यह देखने के लिए जांचता है कि यह पृष्ठ पृष्ठ टेम्पलेट वाले पृष्ठ के लिए है, जैसे "पेज- {custom_post_type_slug} .php", और यदि ऐसा है, तो यह 'current_page_parent' वर्ग जोड़ देगा।
फ़िल्टर प्राथमिकता 1 है, कुछ विषयों के रूप में, current_page_parent/etc को प्रतिस्थापित करें। 'सक्रिय' जैसे वर्ग वाले वर्ग (उदाहरण के लिए 'जड़ों' यह करता है), इसलिए इस फ़िल्टर को पहले निष्पादित करने की आवश्यकता है।
आखिरकार, यह 3 स्थैतिक चर का उपयोग करता है क्योंकि इस फ़ंक्शन को बार-बार कहा जाता है और ये (स्पष्ट रूप से) सभी कॉल के माध्यम से समान रहते हैं।
function theme_current_type_nav_class($css_class, $item) {
static $custom_post_types, $post_type, $filter_func;
if (empty($custom_post_types))
$custom_post_types = get_post_types(array('_builtin' => false));
if (empty($post_type))
$post_type = get_post_type();
if ('page' == $item->object && in_array($post_type, $custom_post_types)) {
if (empty($filter_func))
$filter_func = create_function('$el', 'return ($el != "current_page_parent");');
$css_class = array_filter($css_class, $filter_func);
$template = get_page_template_slug($item->object_id);
if (!empty($template) && preg_match("/^page(-[^-]+)*-$post_type/", $template) === 1)
array_push($css_class, 'current_page_parent');
}
return $css_class;
}
add_filter('nav_menu_css_class', 'theme_current_type_nav_class', 1, 2);
पीएस। मैंने अभी तक देखा है कि सभी गैर-सीएसएस समाधानों में एक कमी को इंगित करने के लिए: कुछ भी ध्यान में नहीं लिया गया है जो किसी आइटम से लिंक करने वाले किसी आइटम के मेनू आइटम अभिभावक/पूर्वजों को हाइलाइट कर रहा है जो वर्तमान की पोस्ट प्रदर्शित करता है कस्टम पोस्ट प्रकार।
Home Company News Contact
|
\--About Us
\--Products
"उत्पाद" एक टेम्पलेट "पृष्ठ-product.php" के साथ एक पृष्ठ है और प्रकार 'उत्पाद' के पदों का अवलोकन से पता चलता: एक कस्टम पोस्ट प्रकार "उत्पाद" और की तरह एक मेनू पर विचार करें। पोस्ट समाधान के कारण इसे हाइलाइट किया गया है। हालांकि 'कंपनी' को अपने माता-पिता/पूर्वजों के रूप में भी हाइलाइट किया जाना चाहिए, लेकिन ऐसा नहीं है। मन में कुछ रखने के लिए।
+1 उत्कृष्ट खोज, यह Trac – TheDeadMedic
में सुनकर खुशी हुई है मैंने इसे अब सीएसएस और बॉडी क्लास के साथ किया है। हालांकि समारोह के लिए धन्यवाद। – Craig
+1 यहां बहुत छोटा स्निपेट, मुझे एक टन बचाया :) – Xavier