web-dev-qa-db-ja.com

ユーザーが表示している現在のプロファイルのユーザーロールに基づく条件付き - BuddyPress

BuddyPressを使用していますが、ユーザーロールのStore Ownerプロファイルにのみ表示される特定のコードブロックが必要です。それをmember_header.phpに入れますので、それは単なるテンプレートファイルです。

私は長い間掘り下げてきましたが、これを理解することはできないようです。私は現在のユーザーロールをターゲットにする方法を見つけました、しかしそれはそれをStore Ownerユーザーロールのユーザーのためのみんなのプロフィールに表示させます。

私は条件付きが必要だと理解していますが、正しい条件付きを見つけることができないようです...何かが足りないのですか。

本当にありがとう!!

編集

わかりました、それで私はいろんなことをいじっていて、ちょっと違う何かに移りました...私はまだわずかに異なっていて柔軟性の低い設定で、同様の助けが必要です。

私は考えを変え、このコードブロックを完全に別のプロファイルページに移動しました。プロファイルメニューでページを作成してリンクしました。それで私が条件を必要とするのは見られているプロフィールのユーザ役割に基づいてこのメニュー項目を示すことです。

これは、各ユーザーのページに機能し、表示されるコードです。

// 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' );

これが私がプレイしてきたコードですが、メニュー項目が where と表示されないようにします。

// 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' );

私のサイトは次のとおりです。 http://www.pureplayhaven.com そして、 "sample"というユーザーは "Store Owner"ユーザーです。

どうもありがとうございます!!

2
LadyCourage

表示されたユーザーがその役割を持っているかどうかを確認する必要があると思います。$user->IDbp_displayed_user_id()に置き換えてみてください。

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