Les liens de navigation BuddyPress
Les liens des éléments de navigation de BuddyPress ne peuvent pas être modifiés en utilisant le tableau de bord WordPress. J’explique dans cet article comment y parvenir de manière programmatique.
Par exemple, je souhaite que l’élément Modifier
dans la section Profil
pointe directement dans le tableau de bord WordPress. Cela peut paraître étrange comme idée, mais c’est seulement pour illustrer cet article.
J’expose deux méthodes dans cet article :
- Profiter d’un hook BuddyPress
- Utiliser l’API BuddyPress
Utiliser un hook BuddyPress
Le moyen le plus direct est d’utiliser le filtre bp_nouveau_get_nav_link
qui prend trois paramètres :
$link
: Le lien de l’élément de menu$nav_item
: L’élément de menu courant$displayed_nav
: La navigation courante/li>
Le contenu de ces paramètres pour le sous-menu Modifier
:
Le code :
La valeur retournée est modifiée lorsque le filtre est appelé pour le sous-menu de slug edit
Il en découle la question suivante :
- Comment connaître les slugs du sous-menu ?
- Plus précisément, comment savoir que c’est le slug
edit
que je dois surveiller ?
La réponse n’est pas simple et j’ai déjà abordé le sujet dans d’autres articles sur BuddyPress. Il existe une méthode pour obtenir un aperçu de l’arborescence complète du menu en cours d’affichage : get_item_nav()
.
- Seulement voilà : elle est présente dans la classe
BP_Core_Nav
. Il faut donc nécessairement récupérer l’instance de cette classe lors de l’exécution. - Et elle doit être appelée une fois complète la construction du menu de navigation… ce qui n’est pas le cas lors de l’appel du filtre
bp_nouveau_get_nav_link_text
.
La solution est de l’appeler juste avant l’affichage du menu, lors de l’appel de l’action bp_actions
:
Et voici un aperçu de ce que cela donne :
L’instance de BP_Core_Nav
peut se récupérer ainsi : buddypress()->members->nav;
Voilà une bonne transition avec la deuxième façon de modifier le titre du sous-menu. En effet, dans l’appel de cette action bp_actions
, on peut en profiter pour interagir directement avec les fonctions du coeur de BuddyPress.
Interagir avec l’API BuddyPress
Le hook bp_actions
est appelé juste avant l’affichage du menu. C’est donc l’endroit parfait pour modifier ce menu.
La fonction edit_nav
est la méthode à utiliser. Elle prend 3 paramètres :
$args
: Les paramètres à modifier dans la navigation.$slug
: Slug de la navigation$parent_slug
: Slug de la navigation parente
Le code intégral
Le code intégral comprenant les deux approches :