[BuddyPress] ナビメニューとサブメニューに新規メニューを追加する
コードは/wp-content/plugins/bp-custom.php
に記載する(なければ新しく作ること)
WordPress バージョン 5.1.1
BuddyPress バージョン 4.3.0
テーマ「Customify」 バージョン: 0.3.1
やること
- サイト管理者は、登録メンバーのToDoメニューの「タスク追加」からメンバー各々に必要なタスクを入力する
- 「タスク追加」はサイト管理者にのみ表示
- 登録メンバーはToDoメニューの「タスク一覧」からタスクを確認する
ナビメニュー作成
bp_core_new_nav_item()
:ナビメニューを追加する関数
ナビメニューに新たに「ToDo」というメニューを追加する
// 新規ナビメニュー「ToDo」追加
add_action( 'bp_setup_nav', 'todo_nav');
function todo_nav() {
global $bp;
bp_core_new_nav_item( array(
// メニューに表示される名前
'name' => 'ToDo',
'slug' => 'todo',
// 表示場所 数字が大きいほど右に表示される(デフォルト:99)
'position' => 55,
'screen_function' => 'todo',
'show_for_displayed_user' => true,
// メニュー初期表示時(「ToDo」をクリックしたとき)にどのサブメニューを表示するか
'default_subnav_slug' => 'task_list',
'item_css_id' => 'todo'
));
}
サブメニュー作成
bp_core_new_subnav_item()
:サブメニューを追加する関数
サブメニュー「タスク一覧」作成
ナビメニュー作成でメニューバーに新しく「ToDo」が追加されたので、サブメニュー「タスク一覧」を作る
// サブメニュー「タスク一覧」追加
add_action('bp_setup_nav', 'task_list_subnav', 100 );
function task_list_subnav() {
global $bp;
bp_core_new_subnav_item( array(
'name' => 'タスク一覧',
// サブメニューのURLを指定
'slug' => 'task_list',
// 親ページのURL
'parent_url' => trailingslashit( $bp->displayed_user->domain . 'todo' ),
'parent_slug' => 'todo',
// 使用するサブメニューの関数名
'screen_function' => 'task_list',
'position' => 50
)
);
}
// 「タスク一覧」の関数
function task_list() {
// ページタイトル
add_action( 'bp_template_title', 'task_list_title' );
// 表示するページ内容
add_action( 'bp_template_content', 'task_list_content' );
// テンプレートファイルのロード (メンバーページのファイルを読んでいる)
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
}
// ページタイトルの中身
function task_list_title() {
echo 'タスク一覧
';
}
// ページ内容
function task_list_content() {
include_once "buddypress/custom_nav/task_list.php";
}
ページ内容は別ファイルにして/plugins/buddypress/custom_nav
フォルダに格納し(フォルダは新規作成)、include_once
で読み込み.
簡単な内容であればここにコード(例:echo '<p>Hello!</p>';
)を書いてもいい
サブメニュー「タスク追加」を追加
サブメニュー「タスク追加」を作成、およびサイト管理者にのみ表示されるよう設定する
// サブメニュー「タスク一追加」追加
add_action('bp_setup_nav', 'add_task_subnav', 200 );
function add_task_subnav() {
global $bp;
bp_core_new_subnav_item( array(
'name' => 'タスク追加',
'slug' => 'add_task',
// 親ページのURL
'parent_url' => trailingslashit( $bp->displayed_user->domain . 'todo' ),
'parent_slug' => 'todo',
'screen_function' => 'add_task',
// 管理者でログインしている場合のみ表示
'site_admin_only' => true,
'position' => 60
)
);
}
// 「タスク追加」関数
function add_task() {
// ページタイトル
add_action( 'bp_template_title', 'add_task_title' );
// 表示するページ内容
add_action( 'bp_template_content', 'add_task_content' );
// テンプレートファイルのロード
bp_core_load_template( apply_filters('bp_core_template_plugin','members/single/plugins'));
}
// ページタイトルの中身
function add_task_title() {
echo 'タスク追加
';
}
// ページ内容
function add_task_content() {
include_once "buddypress/custom_nav/add_task.php";
}
オプションで、'site_admin_only' => true
とすると、ログインユーザーがサイト管理者のときのみ、このサブメニューが表示される。非管理者としてログインすると非表示となる
サイト管理者でログインしたとき
非管理者でログインしたとき