Les éléments de navigation BuddyPress
Les éléments de navigation de BuddyPress ne peuvent pas être supprimés de manière sélective en utilisant le tableau de bord WordPress, sauf à désactiver le module concerné. Cet article montre comment le faire simplement de manière programmatique.
Dans cet exemple, je souhaite supprimer l’élément Visibilité du profil
dans la section Réglages
.
Il existe plusieurs manières de le faire dans BuddyPress, comme bien souvent. Les deux approches que je vous montre par la suite utilise l’API BuddyPress.
La méthode bp_core_remove_subnav_item
La fonction bp_core_remove_subnav_item
est une des méthodes à utiliser. Elle prend 2 paramètres :
$parent_slug
: Slug de la navigation parente$slug
: Slug de la navigation
Elle doit être appelée à un moment de l’exécution où le menu est construit et prêt à être affiché. Le hook bp_actions
est appelé juste avant l’affichage du menu. Sa construction est finalisée à cet endroit. C’est donc l’endroit idéal pour interagir avec le menu et y placer le code.
La question suivante se pose :
- Comment connaître les slugs du menu parent et du sous-menu ?
- Plus précisément, comment savoir que c’est le slug
profile
dans le slug parentsettings
que je dois supprimer ?
Il existe pour cela une méthode pour obtenir un aperçu de l’arborescence complète du menu en cours d’affichage : get_item_nav()
. Et cela tombe bien, le hook bp_actions
est le bon endroit également pour le faire :
Et voici un aperçu de ce que cela donne :
L’appel de bp_core_remove_subnav_item
est alors simple :
La méthode delete_nav
Une autre méthode pour supprimer un élément de navigation BuddyPress est delete_nav
. Elle prend 2 paramètres, les mêmes que la précédente, mais inversés :
$slug
: Slug de la navigation$parent_slug
: Slug de la navigation parente
Elle doit également être appelée à un moment de l’exécution où le menu est construit et prêt à être affiché, donc toujours dans le hook bp_actions
.
La différence est qu’elle est définie dans la classe BP_Core_Nav
, de même que pour get_item_nav
utilisée précédemment. Mais au final, son appel n’est guère plus compliquée :