wake-up-neo.com

li-Klasse & ID für Menüelemente und Seitenliste entfernen

Beispiel für die Ausgabe einer Standard-CSS-Klasse in WordPress:

<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">

Das Menü- und Seitenlistenelement wird mit verschiedenen eigenen Variablen class und id geliefert.

Wie entferne ich sie in der functions.php-Datei für das Menü und für die Seitenliste?

19
Cam

Sie sollten in der Lage sein, sie zu entfernen, indem Sie in ein paar Filter einhaken und leere Arrays oder Zeichenfolgen anstelle von neuen Klassen oder IDs zurückgeben:

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() : '';
}

Wenn Sie bestimmte Klassen beibehalten möchten, können Sie Folgendes tun:

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

dies ist eine Ergänzung zu Richard Antwort.

falls Sie die aktuelle Menüelement-Klasse in etwas anderes ändern möchten.

        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;
        }
4
alhoseany

Hier ist ein Update, das ich mir ausgedacht habe. Es entfernt alle IDs und Klassen aus dem wp_nav_menu, ermöglicht Ihnen jedoch, Ihre eigene "genehmigte" Liste von Klassen und/oder IDs aufzurufen. Es ändert auch den längeren "aktuellen Menüpunkt" in "aktiv". Wenn Sie die Standard-WordPress-CSS-Stile beibehalten möchten, löschen Sie einfach diesen Codeabschnitt. Um diesen Beitrag minimal zu halten, hier die Links zum Pastebin mit dem Code:
http://Pastebin.com/W16cxDfY - für Ihre Datei "functions.php"
http://Pastebin.com/CGx4aprf - für Ihre Vorlage, wo immer das Menü angezeigt wird

2

einfach add_filter('nav_menu_item_id', '__return_false'); für die Menüelement-ID

1
vralle

Wenn Sie nur alle Listenklassen und IDs entfernen möchten, fügen Sie dies zur functions.php hinzu

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
Randy Kilwag

Ein Zusatz zu Richards Antwort: Wir müssen die leeren Klassen bereinigen:

//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;
}
0
Zeno Popovici

Der beste Weg, um li zu entfernen, ist: Getestet und verifiziert

           <?php
            $menuParameters = array(
              'theme_location'  => 'header-menu-top', 
              'container'       => false,
              'echo'            => false,
              'items_wrap'      => '%3$s',
              'depth'           => 0,
            );
            echo strip_tags(wp_nav_menu( $menuParameters ), '<a>' );
            ?>
0
Atif Tariq

Meine Lösung:

$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;
0
Olivier C