/wp-content/plugins/bp-custom.php
BuddyPress用の変更は主に上記ファイルに記載します。
存在しない場合は新規で作成します。
(テーマフォルダのfunction.phpのように使用する)
■blogsにサブメニューを追加しました。
/* Buddy Press blogs サブメニュー追加 ------------------------------------------*/ function article_list_subnav_tab() { global $bp; bp_core_new_subnav_item( array( 'name' => '最新記事一覧', // サブメニュー名 'slug' => 'article-list', // サブメニューのスラッグ 'parent_url' => trailingslashit( bp_displayed_user_domain() . $bp->blogs->slug ), // 親メニューのURL 'parent_slug' => $bp->blogs->slug, // 親メニューのスラッグ 'show_for_displayed_user' => true, 'screen_function' => 'article_list_action', // 実行するファンクションを指定 'position' => 10, ) ); } add_action('bp_setup_nav', 'article_list_subnav_tab', 100 ); // サブメニューのテンプレートを設定 function article_list_action() { add_action( 'bp_template_content', 'article_list_action_content' ); bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); } // 読み込むページテンプレートを指定する function article_list_action_content() { locate_template( array( 'buddypress/custom_user/article_list.php' ), true ); }
管理してるサイトの最近記事一覧を表示するページが欲しかったので
今回サブメニューを追加しました。
追加は上手く行ったものの、サブメニューのaタグが動作しない(画面遷移しない)?!という問題が発生
出力されたソースコードを確認すると、
以下のような違いがありました。
<!--他スラッグのサブナビを囲むdiv--> <div class="item-list-tabs no-ajax" id="subnav" role="navigation"> ^^^^^^^ ↓↓↓ <!--blogsのサブナビを囲むdiv--> <div class="item-list-tabs" id="subnav" role="navigation">
謎のクラス”no-ajax”……!!!!!
なんだかBuddy Pressで使用しているajaxが邪魔をして、aタグが動作しない現象が起きるようです。
blogsのsubnavにも”no-ajax”を追加してあげれば、正常に動作するのですが、
テンプレートを変更せず、bp-custom.php内のみで、上手くクラスを書き換える方法がわからず(ない?)、
直接「/buddypress/bp-templates/bp-legacy/buddypress/members/single/blogs.php」の該当箇所を修正しました…
本当はきちんとテーマテンプレートを作成するのが良いのかもしれないのですが、
影響範囲がちょっと広いので一旦の応急処置です…ちゃんとテンプレート作ろう…
恐らく直接変更だとBuddy Pressの更新が入った際に上書きされる可能性があります。
参考サイト:
BuddyPressのユーザーページにオリジナルページを追加しよう@ITかあさん
Assigning New Subnav Items
bp_core_new_nav_item()
Ajax problem