BuddyPress 既存メニューにサブメニュー追加(no-ajax問題)

/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