Foros » Diseño – Temas y plantillas » Crear menú footer

  • Buenas tardes:

    Estoy intentando agregar dos menús a mi tema personalizado. Os copio el código para que sea más sencillo de entender:

    functions.php

       
        function orsajo_theme2_menus() 
        {
            register_nav_menus(array(
                'menu-principal' => __('Menú Principal', 'orsajo_theme2'),
                'menu-footer' => __('Menú Pié de Página', 'orsajo_theme2')
            ));
        }
        add_action('init', 'orsajo_theme2_menus');

    header.php

                <?php
    
                    $args = array(
                        'theme_location' => 'menu-principal', 
                        'container' => 'nav',
                        'container_class' => 'menu-principal',
                    );
    
                    wp_nav_menu($args);
                ?>

    footer.php

                <?php
    
                    $args_footer = array(
                        'theme_location' => 'menu-footer', 
                        'container' => 'nav',
                        'container_class' => 'menu-footer',
                    );
    
                    wp_nav_menu($args_footer);
                ?>

    El problema que tengo es que, aunque no le haya agregado enlaces al menú en el dashboard de WordPress, me muestra todos los enlaces igualmente.

    He eliminado todos los menús y al recargar me sigue mostrando todas las páginas creadas en ambos sitios, header y footer.

    ¿Alguna solución?, muchas gracias.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador LGrusin

    (@lgrusin)

    Lo que has puesto en el header.php y footer.php debe ir en el functions.php

    El comportamiento normal es que se muestren todas las páginas si no hay menú. Lo que puedes hacer es una comprobación en el header.php y el footer.php según sea el menú a mostrar. Es decir,

    <?php if ( has_nav_menu( 'menu-principal' ) ) : ?>
     <div class="navigation-top">
     ... etc... etc...
     </div><!-- .navigation-top -->
    <?php endif; ?>
    • Esta respuesta fue modificada hace 4 años, 9 meses por LGrusin.
    Iniciador del debate José Manuel Ortiz Sánchez

    (@josemortizs)

    Buenos días LGrusin, muchas gracias por la respuesta. La etiqueta que estaba buscando es has_nav_menu(), muchas gracias.

    Ayer conseguí que finalmente funcionase así:

                <!-- Menú de Navegación -->
                <?php
    
                    $args = array(
                        'menu' => 'menu-principal',
                        'theme_location' => 'menu-principal', 
                        'container' => 'nav',
                        'container_class' => 'menu-principal',
                        'fallback_cb' => 'false'
                    );
    
                    wp_nav_menu($args);
                ?>

    Agregando la clave: ‘fallback_cb’ => ‘false’, solo me muestra los menús cuando el usuario los ha establecido en el dashboard -> Menús de WordPress.

    La verdad es que tu modo me parece más elegante, la cuestión es, ¿es incorrecta mi forma de hacerlo?, porque de serlo lo modificaría.

    Muchas gracias.

    Moderador LGrusin

    (@lgrusin)

    Por defecto
    'fallback_cb' => 'wp_page_menu'
    Lo que significa que siempre saldrán las páginas si no hay menús creados.

    Ponerlo en false o hacer la comprobación previa es lo mismo, siempre y cuando no quieras mostrar ningún menú cuando el usuario no lo crea. Hay ocasiones que puedes desear poner tu propio menú por defecto mediante fallback_cb y otras en las que puedes dejar las páginas.

    • Esta respuesta fue modificada hace 4 años, 9 meses por LGrusin.
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Crear menú footer’ está cerrado a nuevas respuestas.