メニュー追加の関数
WordPressの管理画面にメニューを追加する関数は add_menu_page() です。
メニューを表示する関数、クリックされた際に表示されるページの関数、管理画面表示時に追加メニューを呼び出す関数の3つが必要です。
add_menu_pageはメニューを表示させる関数内に記述します。
メニューを表示する関数
function custom_admin_menu_action() {
add_menu_page(
‘Custom Menu’, // メニュータイトル
‘Custom Menu’, // メニューページのタイトル
‘manage_options’, // 必要な権限
‘custom-menu’, // メニュースラッグ(一意である必要があります)
‘custom_menu_page’ // メニューページの内容を表示する関数
);
}
メニューをクリックした際にページを表示する関数
function custom_menu_page() {
// メニューページの内容を記述する
echo ‘Custom Menu Page’;
}
管理画面表示時に追加メニューを呼び出す関数
add_action(‘admin_menu’, ‘custom_admin_menu_action’);
これでメニューが追加されました。
クリックするとcustom_menu_pageで記述している内容が表示されています。
メールメニューを追加
今回は「メール」というメニューにさらにサブメニューとして「 配信タスク」「 配信ログ」の3つを追加します。
関数名が他のプラグインと被らないように、NecosukeCMSの略称としてNecoを追加するルールにします。
function NECO_custom_admin_menu_action() {
add_menu_page(
'メール管理', // メニュータイトル
'メール管理', // メニューページのタイトル
'manage_options', // 必要な権限
'NECO_custom-menu_mail', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_mail' // メニューページの内容を表示する関数
);
add_submenu_page(
'NECO_custom-menu_mail', // 親メニューページのスラッグ
'メールタスク', // メニュータイトル
'メールタスク', // メニューアイテム名
'manage_options', // 必要な権限
'NECO_custom-menu_mail_task', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_mail_task' // メニューページの内容を表示する関数
);
add_submenu_page(
'NECO_custom-menu_mail', // 親メニューページのスラッグ
'メールログ', // メニュータイトル
'メールログ', // メニューアイテム名
'manage_options', // 必要な権限
'NECO_custom-menu_mail_log', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_mail_log' // メニューページの内容を表示する関数
);
}
function NECO_custom_menu_page_mail() {
// メニューページの内容を記述する
echo '<h1>メール管理</h1>';
}
function NECO_custom_menu_page_mail_task() {
// メニューページの内容を記述する
echo '<h1>メールタスク管理</h1>';
}
function NECO_custom_menu_page_mail_log() {
// メニューページの内容を記述する
echo '<h1>メールログ</h1>';
}
add_action('admin_menu', 'NECO_custom_admin_menu_action');
無事にメニューが追加されました。
既存のメニューにサブメニューを追加する
今回はさらに「ユーザー」のサブメニューとして「属性設定」「拡張一覧」とContactForm7が生成した「お問い合わせ」のサブメニューに「会員属性連携」を追加します。
調べてみるとユーザーメニューのスラッグはusers.php、ContactForm7メニューのスラッグは「wpcf7」でした。
サブメニューの表示を追加します。
add_submenu_page(
'wpcf7', // 親メニューページのスラッグ
'会員属性連携', // メニュータイトル
'会員属性連携', // メニューアイテム名
'manage_options', // 必要な権限
'NECO_custom-menu_wpcf7_user', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_wpcf7_user' // メニューページの内容を表示する関数
);
add_submenu_page(
'users.php', // 親メニューページのスラッグ
'属性設定', // メニュータイトル
'属性設定', // メニューアイテム名
'manage_options', // 必要な権限
'NECO_custom-menu_users_config', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_users_config' // メニューページの内容を表示する関数
);
add_submenu_page(
'users.php', // 親メニューページのスラッグ
'拡張一覧', // メニュータイトル
'拡張一覧', // メニューアイテム名
'manage_options', // 必要な権限
'NECO_custom-menu_users_list', // メニュースラッグ(一意である必要があります)
'NECO_custom_menu_page_users_list' // メニューページの内容を表示する関数
);
クリックされた際に呼び出される関数も定義します。
function NECO_custom_menu_page_wpcf7_user() {
// メニューページの内容を記述する
echo '<h1>会員属性連携</h1>';
}
function NECO_custom_menu_page_users_config() {
// メニューページの内容を記述する
echo '<h1>属性設定</h1>';
}
function NECO_custom_menu_page_users_list() {
// メニューページの内容を記述する
echo '<h1>属性会員一覧</h1>';
}
これでメニューが完成しました。
アイコンの設定やメニューの配置場所の設定など細かな設定もできますが、今日はここまでです。