WordPressの管理メニュー(サイドバー)にメニューを追加

WordPressの管理メニュー(サイドバー)にメニューを追加 制作ブログ

テーマやプラグインを自作していると、ワードプレスの管理画面にメニューを追加したい時があります。

サブメニューの追加や変更に関しても同時に見ていきたいと思います。

add_menu_page

今回は管理メニューのトップレベルにメニューを追加するので、[admin_menu]にフックして[add_menu_page]でメニューを追加します。

WordPressの管理画面にはあらかじめきまったメニューが存在しますが、テーマ配下ならadd_theme_page()、メディア配下ならadd_media_page()、トップレベルに追加するならadd_menu_page()、その配下ならadd_submenu_page()など、好きな所に作れます。

▼例)下記内容をテーマfunction.phpかプラグインphpに追加

add_action('admin_menu',function() {
  add_menu_page(
    'ニュース管理',//ページタイトル(特にこだわりがなければニュー上の名前と同じで良い)
    'ニュース管理',//メニュー上の名前
    'administrator',//capability(必要権限)
    'news-edit',//スラッグ
    'news_edit_page',//function
    'dashicons-admin-generic',//※icon_url
    10//ディフォルトで一番下、この数字が大きい程上に表示されます
  );
});

function news_edit_page() {
  echo <<<EOF
<div class="wrap">
<h2>ニュース管理</h2>
</div>
EOF;
}

※icon_urlはWordPressで用意されたものから選ぶことができます。→WordPress.org

これで管理メニューサイドバーにメニューの追加と、ニュース管理とだけ表示された管理ページを追加することができました。

add_submenu_page

add_submenu_pageにて配下のサブメニューを追加できます。
1つでもサブメニューページを追加するとサブメニューとしてメイン追加したものと合わせた2つが表示されます。

▼上記add_menu_pageと同じphpに追加したもの

add_action('admin_menu',function() {
  add_menu_page(
    'ニュース管理',//ページタイトル(特にこだわりがなければニュー上の名前と同じで良い)
    'ニュース管理',//メニュー上の名前
    'administrator',//capability(必要権限)
    'news-edit',//スラッグ
    'news_edit_page',//function
    'dashicons-admin-generic',//※icon_url
    10//表示順(ディフォルトで一番下、この数字が大きい程上に表示されます)
  );
  add_submenu_page(
    'news-edit',//親スラッグ
    '新規ニュース',//ページタイトル
    '新規ニュース',/メニュー上の名前
    'administrator',//capability
    'news-add',//スラッグ
    'news_add_page',//function
     1//表示順
  );
});

function news_edit_page() {
  echo <<<EOF
<div class="wrap">
<h2>ニュース管理</h2>
</div>
EOF;
}

function news_add_page() {
  echo <<<EOF
<div class="wrap">
<h2>新規ニュース</h2>
</div>
EOF;
}

これで、「ニュース管理」のメニュー配下に「ニュース管理」と「新規ニュース」が表示されました。