- WordPress :6.3
- Statut : résolu
- Ce sujet contient 4 réponses, 2 participants et a été mis à jour pour la dernière fois par PatB04, le il y a 1 année et 1 mois.
-
AuteurMessages
-
2 novembre 2023 à 10 h 27 min #2462798
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : 7.4.33 / 5.2.0
- Thème utilisé : Twenty Twenty-three avec un thème enfant
- Extensions en place : CF7
- Nom de l’hébergeur : localhost
- Adresse du site : —
Problème rencontré : J’essaie de faire un hook pour afficher un élément de menu seulement lorsque l’utilisateur est connecté.
J’ai donc une fonction de ce style :
function masquer_element_admin_non_connecte($items, $args) {
if ($args->theme_location == 'navigation') {
if (is_user_logged_in()) {
$items .= '<li><a href="#">admin</a></li>';
}
}
return $items;
}
add_filter('wp_nav_menu_items', 'masquer_element_admin_non_connecte', 10, 2);functionsLe problème c’est que l’argument « primary » fonctionne bien avec Astra, mais que je ne trouve pas quel argument mettre pour afficher cet item dans ma barre de navigation avec le thème TT3. J’ai essayé « navigation », « main-menu », …, mais rien ne fonctionne.
J’ai créé ma page et mes menus uniquement avec Gutenberg et personnalisés aves CSS.Merci pour votre aide car là je suis perdu…
- Ce sujet a été modifié le il y a 1 année et 1 mois par PatB04.
2 novembre 2023 à 14 h 01 min #2462814Bonjour,
Le thème twentytwentythree est spécial (entièrement tourné vers le FSE). Pas de customizer, pas de fonction.php (mais les thèmes enfant en ont), es hooks valables avec les thèmes classiques ne le sont pas avec 2023. En particulier, il n’y a pas de wp_nav_menu_items et à ma connaissance les solutions classiques (PHP) pour enlever ou ajouter des éléments au menu ne sont pas applicables. Dans mon cas, pour résoudre ce problème, je passe par le Javascript et le hook wp_footer qui, lui, reste utilisable. Dans votre cas, ça donne:
function remove_menu_item(){
if (!is_user_logged_in()) {?>
<script>
document.querySelectorAll('.wp-block-group .wp-block-navigation-item')[3].remove()
</script>
<?php }
}
add_action('wp_footer', 'remove_menu_item');Il faut repérer l’ordre de l’élément de menu à enlever en partant de [0] (dans le code ci-dessus [3] donc le quatrième élément du menu).
J’espère que ça pourra vous être utile. Il y a sans doute d’autres méthodes avec la méthode
2 novembre 2023 à 15 h 09 min #2462820Merci beaucoup pour toutes ces explications et ce code qui fonctionne bien.
J’ai bien fait un thème enfant et c’est ce thème qui est activé. Du coup est-il possible de faire quelque chose en php ou non ? (Pardon pour ces questions parfois basiques, mais je débute…)- Cette réponse a été modifiée le il y a 1 année et 1 mois par PatB04.
2 novembre 2023 à 21 h 18 min #2462849Du coup est-il possible de faire quelque chose en php ou non ? (Pardon pour ces questions parfois basiques, mais je débute…)
Avec twentytwentythree, qui n’est pas un thème conçu comme les thèmes plus classiques, il faut oublier certaines méthodes basées sur le php (donc, j’évite ce thème). Pour beaucoup de choses, on peut utiliser du javascript (en front-end). Idéalement on peut utiliser React pour travailler en back-end mais c’est un tout autre monde que je connais très mal.
Cependant, comme on travaille avec Gutenberg, on peut toujours utiliser le php pour pas mal de choses: charger des feuilles de style ou des fichiers js, faire des boucles de recherche, afficher ou non des blocs selon leur fonction et selon le rôle de l’utilisateur…etc. Pour cela on dispose essentiellement de blocks shortcode .
3 novembre 2023 à 9 h 11 min #2462856Merci beaucoup pour toutes ces explications.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.