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
ymenu_id
para establecer un atributo de clase y / o id en la UL.menu_class
ymenu_id
solo funcionará si el menú está activado. Si el menú no existemenu_class
ymenu_id
no es como<ul>
sino como<div>
. es por eso que muchas preguntas sobrewp_nav_menu()
ti pueden probarlo :)Respuestas:
La función wp_nav_menu toma un argumento de fallback_cb, que es el nombre de la función que se ejecutará si el menú no existe. así que cambie su código a algo como esto:
incluso puede eliminar el contenedor del menú y hacer otras cosas con algunos argumentos más enviados a la función wp_nav_menu
Espero que esto ayude.
fuente
nav-menu-template.php
fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. Set to false for no fallback
¿Qué debo reemplazar para quewp_nav_menu_no_ul()
funcione si configuro falso en elfallback_cb
? Porque vuelve en blanco por ahora.ha ha
En realidad, WordPress admite esto de manera predeterminada:
El valor predeterminado para
items_wrap
es<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.fuente
<ul>
después de que ya se haya agregado son solo hacia atrás'container' => false
si quieres deshacerte del envoltorio<div>
también.El siguiente código debería simplemente hacerlo.
Consulte este enlace para la función wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
fuente
Si desea imprimir solo
<a>
etiquetas, puede ir de esta manera:fuente
Para mí lo que funcionó fue esto:
Espero eso ayude.
fuente
Sé que esta respuesta no es completamente para esta pregunta, pero hay muchas personas que saben cómo eliminar la etiqueta ul y li en WordPress y agregar otra etiqueta en WordPress.
Al igual que antes de aplicar mi código, WordPress da estos tipos de salida en el menú
Pero alguien quiere cambiar ul en div y li en una etiqueta, entonces debe usar el siguiente código
Esto da salida en el siguiente formato
fuente