J'ai recherché sur ce site et trouvé de nombreuses réponses à cette question. La plupart d'entre eux ne travaillent pas sur mon thème.
Voici une solution unique que j'ai trouvée et qui fonctionne selon mes besoins.
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);
}
Ce code sera supprimé ul
au début et à la fin de wp_nav_menu()
. Donc dans mon thème j'écris juste
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Mais le problème revient quand je n'ajoute ni n'active aucun menu via admin. http://domain.com/wp-admin/nav-menus.php
Question:
Comment supprimer le <div><ul>**</ul></div>
si le menu est actif ou non. Faites le moi savoir
Enfin je l'ai fait fonctionner :) 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
etmenu_id
pour définir un attribut de classe et / ou id sur l'UL.menu_class
etmenu_id
ne fonctionnera que si le menu est activé. Si le menu n'existe pasmenu_class
etmenu_id
n'est pas aussi<ul>
mais que<div>
. c'est pourquoi trop de questions surwp_nav_menu()
vous peuvent le tester :)Réponses:
La fonction wp_nav_menu prend un argument de fallback_cb qui est le nom de la fonction à exécuter si le menu n'existe pas. alors changez votre code en quelque chose comme ceci:
vous pouvez même supprimer le conteneur du menu et faire d'autres choses avec des arguments supplémentaires envoyés à la fonction wp_nav_menu
J'espère que cela t'aides.
la source
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
ce que dois-je remplacer pour fairewp_nav_menu_no_ul()
fonctionner si je mets false sur lefallback_cb
? Parce qu'il revient vide pour l'instant.ha ha
En fait, WordPress prend en charge cela par défaut:
La valeur par défaut
items_wrap
est<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.la source
<ul>
fois qu'il a déjà été ajouté sont juste à l'envers'container' => false
si vous voulez aussi vous débarrasser de l'emballage<div>
.Le code ci-dessous devrait simplement le faire.
Référencez ce lien pour la fonction wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
la source
Si vous souhaitez imprimer uniquement des
<a>
balises, vous pouvez procéder comme suit:la source
Pour moi, ce qui a fonctionné était le suivant:
J'espère que cela aide.
la source
Je sais que cette réponse n'est pas complètement pour cette question, mais il y a tellement de gens qui savent comment supprimer les balises ul et li dans WordPress et ajouter une autre balise dans WordPress.
Comme avant d'appliquer mon code, WordPress donne ces types de sortie dans le menu
Mais quelqu'un veut changer ul en div et li en une balise alors vous devez utiliser le code ci-dessous
Cela donne une sortie dans le format suivant
la source