2011-03-07 15 views
17

वर्डप्रेस डिफ़ॉल्ट CSS वर्ग उत्पादन का उदाहरण:निकालें ली वर्ग और आईडी सूची

<li id="menu-item-55" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55"> 

<li class="page_item page-item-37"> 

मेनू और पृष्ठों सूची आइटम विभिन्न स्वयं ली class और id साथ आते हैं।

मेनू के लिए और पृष्ठों की सूची के लिए functions.php फ़ाइल में उन्हें कैसे निकालें?

+2

आप उन्हें क्यों निकालना चाहते हैं? जब आप उनके लिए सीएसएस लिखते हैं तो वे आपको बहुत विशिष्ट लक्ष्यीकरण प्राप्त करने की अनुमति देते हैं। – JohnP

+3

इसका उपयोग न करें, और HTML में घृणित दिखें। सीएसएस में आप उन आईडी और कक्षाओं के बिना किसी भी तरह से उन्हें लक्षित और स्टाइल कर सकते हैं – Cam

+0

वास्तविक रूप से आप वेब पर उपयोगकर्ताओं के अच्छे हिस्से को अलगाव किए बिना नहीं कर सकते हैं, एकमात्र तरीका आपको पर्याप्त विशिष्टता मिलेगी सीएसएस 2 का उपयोग कर/CSS3 चयनकर्ता, जो प्रत्येक उपयोगकर्ता के लिए काम नहीं करेंगे, संगतता जानकारी के लिए क्विर्क मोड साइट देखें: http://www.quirksmode.org/compatibility.html – t31os

उत्तर

41

आप फिल्टर के एक जोड़े में hooking और खाली सरणियों या तार के बजाय नए वर्गों या आईडी वापस लौट कर उन्हें हटाने के लिए सक्षम होना चाहिए:

add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1); 
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1); 
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1); 
function my_css_attributes_filter($var) { 
    return is_array($var) ? array() : ''; 
} 

आप विशेष कक्षाएं आप कर सकते थे रखना चाहता हैं ऐसा कुछ करें:

function my_css_attributes_filter($var) { 
    return is_array($var) ? array_intersect($var, array('current-menu-item')) : ''; 
} 
+0

क्या होगा यदि आप एक सीएसएस कक्षा रखना चाहते हैं जो केवल वर्तमान पृष्ठ के लिए इस्तेमाल किया? उदाहरण: link blackbull77

+0

@ रिचर्ड एम क्या add_filter ('', '', 100, 1) और add_filter ('', '', 10, 2) का उपयोग करने के बीच कोई अंतर है? क्योंकि फ़िल्टर की खोज करते समय, कोडेक्स उदाहरण 10, 2. का उपयोग करता है। धन्यवाद। –

+0

यह काम। धन्यवाद लेकिन मैं सक्रिय कस्टम सीएसएस चाहता हूँ।मेरा मतलब है फॉर्म व्यवस्थापक अगर मैं सीएसएस कक्षा डालता हूं तो वह दिखाएगा .. कोई विचार कैसे – pagol

4

यह रिचर्ड उत्तर के शीर्ष पर एक अतिरिक्त है।

यदि आप वर्तमान-मेनू-आइटम वर्ग को किसी अन्य चीज़ में बदलना चाहते हैं।

 add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1); 
     add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1); 
     function my_css_attributes_filter($var) { 
      if(is_array($var)){ 
       $varci= array_intersect($var, array('current-menu-item')); 
       $cmeni = array('current-menu-item'); 
       $selava = array('selectedmenu'); 
       $selavaend = array(); 
       $selavaend = str_replace($cmeni, $selava, $varci); 
      } 
      else{ 
       $selavaend= ''; 
      } 
     return $selavaend; 
     } 
0

रिचर्ड के जवाब में नया: हम खाली पीछे छोड़ दिया कक्षाओं को साफ करने की जरूरत है:

//Strip Empty Classes 
add_filter ('wp_nav_menu','strip_empty_classes'); 
function strip_empty_classes($menu) { 
    $menu = preg_replace('/ class=(["\'])(?!active).*?\1/','',$menu); 
    return $menu; 
} 
2

यहाँ एक ठीक है कि मैं के साथ आ गया है। यह wp_nav_menu से सभी आईडी और कक्षाओं को हटा देता है, लेकिन आपको कक्षाओं और/या आईडी की अपनी "अनुमोदित" सूची के साथ आने की अनुमति देता है। यह लंबे "वर्तमान-मेनू-आइटम" को "सक्रिय" में भी बदल देता है। यदि आप डिफ़ॉल्ट वर्डप्रेस सीएसएस शैलियों को रखना पसंद करते हैं, तो बस कोड के उस खंड को हटा दें। अपने functions.php फ़ाइल
http://pastebin.com/CGx4aprf के लिए - -
http://pastebin.com/W16cxDfY अपने टेम्पलेट, जहाँ भी मेनू

1

बस add_filter('nav_menu_item_id', '__return_false'); मेनू के लिए चला जाता है के लिए: इस पोस्ट कम से कम रखने के लिए, यहाँ कोड के साथ pastebin के लिंक हैं आइटम आईडी

0

तुम सिर्फ functions.php को

add_filter('nav_menu_item_id', 'filter_menu_id'); 
add_filter('nav_menu_css_class', 'filter_menu_li'); 
function filter_menu_li(){ 
    return array(''); 
} 
function filter_menu_id(){ 
    return; 
} 
0

मेरे समाधान, सभी सूची वर्गों और आईडी के दूर करने के लिए इस ऐड चाहते हैं:

$defaults = array(
    'theme_location' => '', 
    'menu'   => '', 
    'container'  => '', 
    'container_class' => '', 
    'container_id' => '', 
    'menu_class'  => '', 
    'menu_id'   => '', 
    'echo'   => false, // param important 
    'fallback_cb'  => 'wp_page_menu', 
    'before'   => '', 
    'after'   => '', 
    'link_before'  => '', 
    'link_after'  => '', 
    'items_wrap'  => '', 
    'depth'   => -1, 
    'walker'   => '' 
); 

ob_start(); 
echo preg_replace('#<li[^>]+>#', '<li>', wp_nav_menu($defaults)); 
$mainNav = ob_get_clean(); 

// In the page : 
echo $mainNav; 
संबंधित मुद्दे