Menu wordpress

Résolu
RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -  
RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   - 12 août 2021 à 18:45
Bonjour,


<?php
$items=wp_get_nav_menu_items(
get_nav_menu_locations("main-menu")["main-menu"]
);
foreach ($items as $menuItem) :
?>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="<?= $menuItem -> url ?>"><?= $menuItem -> title; ?></a>
</li>
<?php endforeach; ?>

je voiss pas d'erreur ... pls help
A voir également:

3 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

L'erreur indique que le paramètre passé à l'instruction foreach est invalide, autrement dit la variable $items n'est pas un tableau.

La variable $items correspond au retour de la fonction wp_get_nav_menu_items(). D'après la doc, cette fonction retourne soit le tableau des éléments du menu, soit le booléen false si aucun menu ne correspond aux paramètres spécifiés.

La fonction wp_get_nav_menu_items() attends en premier paramètre l'identifiant, le slug, le nom ou l'objet correspondant au menu.

Que retourne la fonction get_nav_menu_locations("main-menu")["main-menu"] dans ton code ? Est-ce que ce retour correspond bien au paramètre attendu par la fonction wp_get_nav_menu_items() ?

Bonne journée,
0
RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   6
 
$items=wp_get_nav_menu_items(get_nav_menu_locations("main-menu")["main-menu"]);
var_dump($items);
$locations=get_nav_menu_locations("main-menu")["main-menu"];
var_dump($locations);


désolé pour le retard de la réponse.
0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745 > RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention  
 
Comme je te l'ai dit dans ton autre discussion, tu vois bien que ta variable ne contient pas du tout ce à quoi tu t'attends...
Il faut donc corriger cela
0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 
Bonjour,
Vu le message d'erreur ... es-tu sûr que $items est bien un Array ??
Fais en un var_dump pour voir et assûre toi qu'il n'est pas vide ou null avant d'essayer de boucler dessus.

$items=wp_get_nav_menu_items(get_nav_menu_locations("main-menu")["main-menu"]);
var_dump($items);

if(!empty($items)){
   foreach	($items as $menuItem) :
?>
	  <li class="nav-item">
        <a class="nav-link active" aria-current="page" href="<?= $menuItem -> url ?>"><?= $menuItem -> title; ?></a>
	  </li>
<?php 
   endforeach; 
}
?>

0
RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   6
 
le tuto que je suis indique :

donc c'est exactement ce que j ai fait:
	<?php 
$items=wp_get_nav_menu_items(get_nav_menu_locations("main-menu")["main-menu"]);

foreach ($items as $menuItem) :
?>
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="<?= $menuItem -> url ?>"><?= $menuItem -> title; ?></a>
</li>
<?php endforeach; ?>

et la, ya cette erreur:
0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 
Tu as peut-être suivi un tuto .... mais .. ça n'empèche pas que le code contienne des erreurs ...
et nous redonner en boucle le message d'erreur rencontré ne nous aidera pas à avancer sur ton souci !

Comme on te l'a déjà indiqué à plusieurs reprises ..
La commande :
	$items=wp_get_nav_menu_items(get_nav_menu_locations("main-menu")["main-menu"]);

Ne retourne pas, à l'heure actuelle dans ton code, un Array ... mais la valeur "false" .. donc normal que ta boucle ensuite plante !

Alors, il faut que tu trouves pourquoi cette commande ne donne pas ce qui est attendu..

Tu pourrais, pour commencer, découper cette ligne de code et essayer de voir ce que retourne chaque partie pour voir si c'est conforme à ce que ton code attend..
$nml = get_nav_menu_locations("main-menu");
var_dump($nml);

$mainMenu = $nml["main-menu"];
var_dump($mainMenu );

$items=wp_get_nav_menu_items($mainMenu);
var_dump($items );



0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745 > jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention  
 
PS: As tu remarqué que le code que je te donne est en couleur et avec la numérotation des lignes ? Pour ça, il faut que tu précises le LANGAGE dans les balises de code.
Explications ( à lire ET A APPLIQUER !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
RomainGA Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   6 > jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention  
 
dsl du retard de la réponse. juste pour te dire que j'avais enfin réussi a faire pop mon menu;) merci (y) dans wordpresse, le pb était la checkbox du choix du type de menu, je sélectionnait toujours la mauvaise ;) PS: j oublie tout le temps d utiliser les balises, dsl
0