管理画面のトップレベルメニューにプラグイン設定メニューを追加する方法

WordPressの管理画面の左サイドに”ダッシュボード”、”投稿”、”設定”などのトップレベルメニューが表示されますが、ここにプラグイン設定メニューを追加する方法をまとめました。

下記サイトを参考にしました。
Ten Things Every WordPress Plugin Developer Should Know
 
下記アクションと関数を使って実施します。
・アクション:”admin_menu”アクション
・WordPress関数:”add_menu_page”関数
・WordPress関数:”add_submenu_page”関数

①”admin_menu”アクションについて
 
管理画面メニューの基本構造が配置された後に実行します。
 
②”add_menu_page”関数
 
・トップレベルメニューページを追加します。
 
○構文
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position )
 
$page_title:メニューページのタイトル。
$menu_title:メニュー名。
$capability:メニューの権限。
$menu_slug:メニューのスラッグ。
$function:メニューページのコールバック関数
$icon_url:メニュー横に表示されるアイコンファイルのURL(省略時は”)。
$position:メニューの追加位置(省略時はNULL)。
 
③”add_submenu_page”関数
 
・サブメニューページを追加します。
 
○構文
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
 
$parent_slug:親メニューのスラッグ。
$page_title:サブメニューページのタイトル。
$menu_title:プルダウンに表示されるメニュー名。
$capability:サブメニューの権限。
$menu_slug:サブメニューのスラッグ。
$function:サブメニューページのコールバック関数。
 
●サンプルコード
 
トップレベルメニューに”My Plugin”、サブメニューに”設定”、”ヘルプ”を持つメニューを追加する例です。

add_action('admin_menu', 'myplugin_menu_pages');

function myplugin_menu_pages() {
  $page_title = 'My Pluginの設定';
  $menu_title = 'My Plugin';
  $capability = 'manage_options';
  $menu_slug = 'myplugin-settings';
  $function = 'myplugin_settings';
  add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function);

  $sub_menu_title = '設定';
  add_submenu_page($menu_slug, $page_title, $sub_menu_title, $capability, $menu_slug, $function);

  $submenu_page_title = 'My Plugin ヘルプ';
  $submenu_title = 'ヘルプ';
  $submenu_slug = 'myplugin-help';
  $submenu_function = 'myplugin_help';
  add_submenu_page($menu_slug, $submenu_page_title, $submenu_title, $capability, $submenu_slug, $submenu_function);
}

function myplugin_settings() {
  if (!current_user_can('manage_options')) {
      wp_die('このページへアクセスする権限がありません。');
  }
}

function myplugin_help() {
  if (!current_user_can('manage_options')) {
      wp_die('このページへアクセスする権限がありません。');
  }
}
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です