Modifier l’ordre des éléments de menu des groupes – BuddyPress 2.6

de | 8 juillet 2016

Avant BuddyPress 2.6, la navigation sur la BuddyBar des groupes était légèrement différente par rapport à celle des activités du site ou des profils. La nouvelle Nav API a permis d’harmoniser et de simplifier cette situation qui touche désormais tous les menus BuddyPress. La nouvelle structure se passe maintenant des functions global au profit d’une méthode plus précise qu’auparavant, qui évite notamment tout risque de collision. Cette précision nécessite cependant plus de rigueur dans la syntaxe. Celle-ci doit obligatoirement mentionner aux côtés des fonctions d’actions, le nom du composant sur lequel agir et l’indication du filtre concerné par une modification quelconque.

La nouvelle structure

buddypres() : dispense de déclarer une variable globale
groups : le composant
nav : indique l’item
edit_nav : l’action à mener
array : les paramètres à modifier
forum, etc : le slug (chemin) qui apparaît en bas à gauche du navigateur au survol de la souris.
bp_current_item() : filtre le nom de l’item

Le snippet suivant permet de changer l’ordre du menu des groupes sur la buddyBar. Elle contient la liste de tous les éléments du menu des groupes de BuddyPress. Si vous utilisez une extension qui ajoute sa propre nav à ce menu, par exemple BuddyDrive, il faudra bien entendu l’ajouter à la fonction, sinon cet élément restera exclu du positionnement personnalisé et apparaîtra toujours après les éléments appartenant à BuddyPress.

function bpfr_group_tab_reorder() {
    if ( ! bp_is_group() ) {
        return;
    }
    // pour changer la position, modifiez la valeur numérique de la position
    buddypress()->groups->nav->edit_nav( array( 'position' => 2 ), 'forum',	      bp_current_item() );
    buddypress()->groups->nav->edit_nav( array( 'position' => 3 ), 'members',	      bp_current_item() );
    buddypress()->groups->nav->edit_nav( array( 'position' => 1 ), 'send-invites',    bp_current_item() );
    buddypress()->groups->nav->edit_nav( array( 'position' => 4 ), 'home',	      bp_current_item() );
    buddypress()->groups->nav->edit_nav( array( 'position' => 0 ), 'admin',           bp_current_item() );
}
add_action( 'bp_actions', 'bpfr_group_tab_reorder' );
Partagez...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someone