web-dev-qa-db-fra.com

Conditionnel en fonction du rôle d'utilisateur du profil actuel visualisé par l'utilisateur - BuddyPress

J'utilise BuddyPress et j'ai besoin d'un certain bloc de code pour apparaître uniquement sur les profils de propriétaire de magasin de rôles. Je vais le mettre dans member_header.php, ce n'est donc qu'un fichier de modèle.

Cela fait longtemps que je creuse et je n'arrive pas à comprendre. J'ai trouvé un moyen de cibler le rôle d'utilisateur actuel , mais cela le fait apparaître dans le profil de tout le monde pour un utilisateur du rôle d'utilisateur Propriétaire du magasin.

Je comprends que j'ai besoin d'un conditionnel, mais je n'arrive pas à trouver le bon conditionnel ... Est-ce que quelque chose me manque?

Merci beaucoup!!

Modifier :

D'accord, j'ai donc bricolé et suis passé à quelque chose d'un peu différent ... J'ai toujours besoin d'une aide similaire, dans un cadre légèrement différent et moins flexible.

J'ai changé d'avis et déplacé entièrement ce bloc de code sur une page de profil distincte. J'ai la page construite et liée à dans le menu du profil. Donc, ce que j'ai besoin de conditionnel, c'est d'afficher cet élément de menu en fonction du rôle d'utilisateur du profil affiché.

Voici le code qui fonctionne et apparaît sur la page de chaque utilisateur:

// Set up Custom BP navigation
function my_setup_nav() {    
   global $bp;
      bp_core_new_nav_item( array(
            'name' => __( 'Calendar', 'buddypress' ),
            'slug' => 'calendar',
            'position' => 20,
            'screen_function' => 'calendar_template' 
      ) );

      // Change the order of menu items
      $bp->bp_nav['messages']['position'] = 100;
}

add_action( 'bp_setup_nav', 'my_setup_nav' );

Voici le code avec lequel j'ai joué, mais il en résulte que l'élément de menu ne s'affiche pas nulle part .

// Set up Custom BP navigation
function my_setup_nav() {   
   if(user_can($user->ID, "store_owner")) {   
   global $bp;
      bp_core_new_nav_item( array(
            'name' => __( 'Calendar', 'buddypress' ),
            'slug' => 'calendar',
            'position' => 20,
            'screen_function' => 'calendar_template' 
      ) );

      // Change the order of menu items
      $bp->bp_nav['messages']['position'] = 100;
}
}

add_action( 'bp_setup_nav', 'my_setup_nav' );

Mon site est: http://www.pureplayhaven.com Et l'utilisateur "échantillon" est un utilisateur "Propriétaire de magasin".

Merci beaucoup!!

2
LadyCourage

Je pense que vous devez vérifier si l'utilisateur affiché a ce rôle, essayez de remplacer $user->ID par bp_displayed_user_id():

function my_setup_nav() {   
   if ( user_can( bp_displayed_user_id(), 'store_owner' ) ) {
       // ... rest of your code
   }
}
0
Ahmad M