探しても、なかなか見つからなくて苦労したので
備忘録も兼ねて
何処にコード追加するか?
/wp-content /pluginsの直下にbp-custom.php
を置きこの中にかく。
buddypressのfunction.php
という事
この辺は
BuddyPressのユーザーページにオリジナルページを追加しよう | ITかあさん
が詳しいので割愛
コードは?
上のURLのはプロフィールページにオリジナルページのため、
そのままではうまく動かない。
add_action( 'bp_setup_nav', 'bpcodex_add_group_tabs');//ユーザーメニュー追加の独自関数をセット
function bpcodex_add_group_tabs() {
//グループの時だけ
if ( ! bp_is_group() ) {
return;
}
global $bp;
$tab_args = array(
'name' => '新しいタブ',
'slug' => 'newtab',
'parent_slug' => $bp->groups->current_group->slug,
'parent_url' => bp_get_group_permalink( $bp->groups->current_group ),
'screen_function' => 'newtab',
'position' => 1,
);
bp_core_new_subnav_item( $tab_args );
}
function newtab() {
add_action( 'bp_template_title', 'newtab_title' );//カスタムユーザーページに見出し
add_action( 'bp_template_content', 'newtab_content' );//カスタムユーザーページに表示したい内容
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'groups/single/plugins' ) );//テーマファイルの呼び出し
}
//これでカスタムしたユーザーページにタイトルが表示される(はず?)
function newtab_title() {
echo "TITLE";
}
//これでカスタムしたユーザーページに表示したいコンテンツ
function newtab_content() {
echo "content";
include_once "buddypress/custom_user/newtab_content.php";
}
プロフィールページに追加する場合と違うのは
1.**bp_core_new_subnav_item()**の引数(parent_slug,parent_url)
2.bp_core_load_template()の行のapply_filters**の第2引数が違っている。
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'groups/single/plugins' ) );//テーマファイルの呼び出し
プロフィールの場合、第2引数が*'members/single/plugins'*
グループの場合、'groups/single/plugins'
これでとりあえず動くようにはなった
備考)ユーザーによって見せないようにするには、
1.メンバーかどうかで変えるには、
***groups_is_user_member()***を使う。
function bpcodex_add_group_tabs() {
global $bp;
if (groups_is_user_member($bp->loggedin_user->id, $bp->groups->current_group->id) ) {
//省略
}
}
2.グループ管理者(とwordpress管理者)のみ
***bp_is_item_admin()***を使う
権限者のみ見えるようにする(メンテページとかで使う)
if( bp_is_item_admin() ){
//省略
}
まだまだ全然把握できてない(T_T)
###まだ出来ていない、わかっていない事
- タイトルが出ていない
- newtab_title()の内容が出力されると思っていたが、うまく出てこない
- サブタブが作れていない
- 同じ***bp_core_new_subnav_item()***で作れると思っているが、うまくいかない
英語の情報を探して回ったけれど、理解が届かず
誰か教えて(T_T)