テーマやプラグインを自作していると、ワードプレスの管理画面にメニューを追加したい時があります。
サブメニューの追加や変更に関しても同時に見ていきたいと思います。
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;
}
これで、「ニュース管理」のメニュー配下に「ニュース管理」と「新規ニュース」が表示されました。