Busqué en este sitio y encontré muchas respuestas para esta pregunta. La mayoría de ellos no está trabajando en mi tema.
Aquí hay una solución que encontré y funciona según mis necesidades.
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
Este código se eliminará ul
al principio y al final de wp_nav_menu()
. Entonces en mi tema solo escribo
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Pero el problema vuelve a aparecer cuando no agrego o activo ningún menú a través del administrador. http://domain.com/wp-admin/nav-menus.php
Pregunta:
¿Cómo elimino <div><ul>**</ul></div>
si el menú está activo o no? Házmelo saber
Finalmente lo conseguí :) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
menu_class
y menu_id
solo funcionará si el menú está activado. Si el menú no existe menu_class
y menu_id
no es como <ul>
sino como <div>
. es por eso que muchas preguntas sobre wp_nav_menu()
ti pueden probarlo :)
menu_class
ymenu_id
para establecer un atributo de clase y / o id en la UL.