0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

buddypressのグループにオリジナルのタブ(ページ)を追加する。

Last updated at Posted at 2018-11-14

探しても、なかなか見つからなくて苦労したので
備忘録も兼ねて

何処にコード追加するか?

/wp-content /pluginsの直下にbp-custom.php
を置きこの中にかく。
buddypressのfunction.php
という事
この辺は
BuddyPressのユーザーページにオリジナルページを追加しよう | ITかあさん
が詳しいので割愛

コードは?

上のURLのはプロフィールページにオリジナルページのため、
そのままではうまく動かない。

bp-custom.php

  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)

###まだ出来ていない、わかっていない事

  1. タイトルが出ていない
    • newtab_title()の内容が出力されると思っていたが、うまく出てこない
  2. サブタブが作れていない
    • 同じ***bp_core_new_subnav_item()***で作れると思っているが、うまくいかない

英語の情報を探して回ったけれど、理解が届かず
誰か教えて(T_T)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?