Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /var/www/success-trigger.co.jp/html/wp-includes/functions.php on line 6114
WordPressの管理メニュー(サイドバー)にメニューを追加 | 神戸Webサイト制作 – サクセストリガー

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;
}

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