Ejemplo de WordPress CSS predeterminado de la clase de salida:

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

El menú y páginas elemento de la lista vienen con diversos propio li class y id.

Cómo eliminarlos en functions.php archivo para el menú y la lista de páginas?

  • ¿Por qué quieres eliminar? Ellos permiten que usted tenga muy específicos de la orientación al escribir CSS para ellos.
  • de no usarlo , y de aspecto horrible en el html. en css puede orientar y estilo de ellos de todos modos sin los id y clases
  • No realiably usted no puede, al menos no sin alienar a una buena parte de los usuarios en la web, la única forma en que puedes obtener suficiente especificidad es el uso de CSS2/CSS3 selectores, que no se va a trabajar para todos los usuarios, ver las peculiaridades de la modalidad de sitio para la compatibilidad info: quirksmode.org/compatibility.html
InformationsquelleAutor Cam | 2011-03-07

8 Comentarios

  1. 42

    Usted debe ser capaz de quitar al enganchar en un par de filtros y volver matrices vacías o cadenas, en lugar de nuevas clases o ids:

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

    Si quería seguir en clases particulares se podría hacer algo como esto:

    function my_css_attributes_filter($var) {
      return is_array($var) ? array_intersect($var, array('current-menu-item')) : '';
    }
    • Lo que si quería mantener una clase css solo es utilizada para la página actual? Ejemplo: <a class=»current-menu-item» href=»#»>link</a>
    • M hay una diferencia entre el uso de add_filter(«,», 100, 1) y add_filter(«,», 10, 2)? Porque cuando se busca el filtro, el codex ejemplo se utiliza 10, 2. Gracias.
    • este trabajo. gracias, pero quiero activo css personalizado. me refiero a la forma de administración si puedo poner css de la clase, a continuación, que se muestran .. ¿alguna idea de cómo
  2. 4

    esta es una adición en la parte superior de Richard respuesta.

    en caso de que desee cambiar el actual-menu-item clase a otra cosa.

            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;
            }
  3. 2

    Aquí es una solución que he encontrado. Elimina todos los id y clases de la wp_nav_menu, pero permite que usted venga con su propio «aprobado» lista de clases y/o identificación. También cambia el largo «current-menu-item» a «activo». Si prefiere mantener el defecto de WordPress estilos CSS, acaba de eliminar esa sección del código. Por el bien de mantener este post mínima, aquí están los enlaces a los pastebin con el código:

    http://pastebin.com/W16cxDfY – para su functions.php archivo

    http://pastebin.com/CGx4aprf – para su plantilla, donde el menú va

  4. 2

    simplemente add_filter('nav_menu_item_id', '__return_false'); para el menú de id de elemento

  5. 0

    Una adición de Richard respuesta:
    Tenemos que limpiar el vacío clases a la izquierda detrás de:

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

    Si solo quieres eliminar toda la lista de clases y de id, añadir esto a 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; 
    }
  7. 0

    Mi solución:

    $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;
  8. 0

    Mejor manera de eliminar li es: Probado y Verificado

               <?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>' );
                ?>

Dejar respuesta

Please enter your comment!
Please enter your name here