2012-04-25 9 views
5

Wordpress इस उल टैग के अंदर मेरे बच्चे मेनू आउटपुट चारों ओर एक div कैसे जोड़ सकते हैं ...मैं वर्डप्रेस उल कंटेनर

<ul class="sub-menu"> 

मैं इसे चारों ओर एक सरल div कैसे लपेट कर सकते हैं?

पसंदीदा रूप से functions.php के माध्यम से ऐसा करने का एक तरीका है, लेकिन jquery भी काम कर सकता है।

उत्तर

17

हालांकि अपने बच्चे मेनू को लपेटने के लिए jQuery की तरह कुछ उपयोग करना आसान होगा, इस उद्देश्य के लिए jQuery का उपयोग करना अच्छा अभ्यास नहीं है। functions.php में रखें:

class Child_Wrap extends Walker_Nav_Menu 
{ 
    function start_lvl(&$output, $depth = 0, $args = array()) 
    { 
     $indent = str_repeat("\t", $depth); 
     $output .= "\n$indent<div class=\"custom-sub\"><ul class=\"sub-menu\">\n"; 
    } 
    function end_lvl(&$output, $depth = 0, $args = array()) 
    { 
     $indent = str_repeat("\t", $depth); 
     $output .= "$indent</ul></div>\n"; 
    } 
} 

मैं यह सोचते हैं रहा है कि अपने मेनू अपने शीर्षक में बनाई जा रही है, इसलिए header.php के पास जाओ (या जो भी फ़ाइल wp_nav_menu समारोह का उपयोग किया जाता है) और कुछ भी है कि शुरू होता है के लिए देखो "wp_nav_menu" के साथ।

चूंकि मेरे पास देखने के लिए कोई कोड नहीं है, इसलिए मैं केवल उन तर्कों का अनुमान लगा सकता हूं जो इसका उपयोग कर रहे हैं (यदि कोई है)। यह वास्तव में की तरह "wp_nav_menu()" कोष्ठक के बीच में कुछ भी नहीं के साथ लग रहा है, उसके बाद निम्न के लिए इसे बदल:

wp_nav_menu(array('walker' => new Child_Wrap())) 

अन्यथा, कोड है कि अपने मेनू तो उपयोग कर रहा है क्या मैं आपकी मदद कर सकते हैं के साथ अपने प्रश्न संपादित करें आगे की।

+0

यह एक आकर्षण (वर्डप्रेस 3.8.1) की तरह काम करता था। – bgondy

+0

वर्क्स परफेक्ट (वर्डप्रेस 4.4) –

+0

यह v4.4.2 में क्यों काम नहीं करता है? मेरे विषय में अभी भी 'ul.sub-menu' के कंटेनर के बिना मुझे मिला :( – X9DESIGN

1

function.php में

class Child_Wrap extends Walker_Nav_Menu 
{ 
    function start_lvl(&$output, $depth) 
    { 
     $indent = str_repeat("\t", $depth); 
     $output .= "\n$indent<div class=\"sub-menu-wrapper\"><ul class=\"sub-menu\">\n"; 
    } 
    function end_lvl(&$output, $depth) 
    { 
     $indent = str_repeat("\t", $depth); 
     $output .= "$indent</ul></div>\n"; 
    } 
} 

समारोह जहाँ आपके wp_nav_menu स्थित है करने के लिए बुलाया गया। (उदाहरण: header.php)

$defaults = array('container' => 'ul', 'menu_class' => 'scroll', 'menu_id' => 'main-menu-nav' , 'walker' => new Child_Wrap()); 

wp_nav_menu($defaults); 

आप इस jQuery का उपयोग कर करना चाहते हैं तो , आप इसे निम्न के रूप में कर सकते हैं। लेकिन सबसे अच्छे तरीके पहली विधि है। पृष्ठ को लोड करते समय कभी-कभी मेनू में गड़बड़ के रूप में प्रदर्शित होता है।

jQuery('ul.sub-menu').wrap('<div class="sub-menu-wrapper" />');