WordPressに独自の管理メニューを追加する① トップメニューの追加

こんにちわ、サイト管理者のわかっち (@wakatchi_tech) です。

質問者

WordPressで作ったブログの設定を保存する方法ってあるの?

WordPressで開発したサイトを運営していると、サイト独自の設定を保存したり、運用しながら設定を変更したいことがあります。

サイト独自の設定は、WordPressの管理メニューを独自に開発することをお勧めしますサイトの設定値(パラメーター)は、プラグインエディタなどを使いfunction.phpなどのソースコードを修正することで変更が可能です。しかしながら、ソースコードをバージョン管理していたり、サイト運営者がコーディングを苦手とする場合は、定常的なソースコードの変更は健全とは言えません。

管理メニューは、WordPressが提供する関数を呼び出すだけで簡単に作成できます。また管理メニューは、サイトの利用者に向けて公開するフロントエンドの画面と異なり、運用者に向けたシンプルな画面で十分なため、デザイン性は多く求められないでしょう。

この記事では、WordPressに独自の管理メニューを追加する方法をご紹介します。

この記事は次のような方にお勧めです

  • WordPressのサイト開発者で、サイト全体の設定をWordPressの管理画面で設定したい人
  • WordPressのテーマやプラグインの開発者

WordPressの管理メニューはPHPでコーディングする

WordPressの管理メニューは、WordPressが提供する関数を使って、PHPでコーディングします。ざっと調べた限りでは、WordPressの管理メニューをコーディングなしで柔軟に設定するプラグインはありません。

WordPressのテーマやプラグイン開発ではもちろん、単一のサイト開発でも管理メニューの利用は有用です。上述のとおり、サイト運営に関する設定はソースコード、例えばfunction.phpなどに記載することは可能ですが、サイトの振る舞いに関する設定をソースコードで定常的に変更することは健全ではありません。ソースコードと設定値は分離するべきです。

わかっち

管理メニューを開発するかは、サイトの設定を誰(開発者?運用者?)が変更するかがポイントになるね

管理メニューは、add_menu_page()を使ってWordPressに追加します。ここから詳しくみていきます。

WordPressに管理メニューを追加する

WordPressの管理メニューとは、WordPressの管理画面で表示されるユーザーインタフェースです。テーマやプラグイン、自身のサイトのオプションページを追加できます。

管理メニューにはトップメニューとサブメニューがあります。トップメニューにするか、サブメニューとするかはプラグインの特性やユーザのニーズなどに基づいて決めます。トップメニューを追加すれば、WordPressの管理コンソールの左側に独自のトップメニューが表示されます。サブメニューのみを追加する場合は、既存のトップメニューに独自のサブメニューが表示されます。

本記事では以下のように、WordPressの管理コンソールに「テスト用トップメニュー」という管理メニューを追加し、「テスト用オプション設定」という画面を表示するサンプルをご紹介します。

上記の画面は、下記のソースコードでWordPressに組み込むことが可能です

<?php
add_action('admin_menu', function(){
	add_menu_page(
		'管理メニュータイトル'
		, 'テスト用トップメニュー'
		, 'manage_options' 
		, 'test_top_menu' 
		, 'test_menu_contents'
		, 'dashicons-calendar'
		,0
	);
});

function test_menu_contents() {
 	// your HTML output code
}

トップメニューを追加する

WordPressのトップメニューに管理メニューを追加する関数を、add_action()でアクションフック名admin_menuに追加します。

add_action('admin_menu', function(){
    // your code
});

さらに、管理メニューを追加する関数に、add_menu_page()に使って管理メニューを追加を実装します。

$hook = add_menu_page(
    string $page_title,
    string $menu_title,
    string $capability,
    string $menu_slug,
    callable $function = '',
    string $icon_url = '',
    int $position = null
);

それではadd_menu_page()の引数をみてみましょう。

add_menu_page()の引数

  • $page_title(必須
    メニューが選択されたときにページのタイトルタグに表示されるテキスト。
  • $menu_title(必須
    メニューのタイトルに使用するテキスト。
    本記事のサンプルでは、WordPress管理コンソールの左側に「テスト用トップメニュー」と表示されます。
  • $capability(必須
    このメニューをユーザーに表示するために必要な権限。
    本記事のサンプルでは、管理メニューへのアクセスを許可するmanged_options権限を付与しています。
  • $menu_slug(必須
    このメニューを参照するスラッグ名。
    このメニューページに対して一意である必要があります。また、使用できる文字は 小文字の英数字、ダッシュ、およびアンダースコア文字のみです。
  • $function(任意)
    このページのコンテンツを出力するために呼び出される関数。
  • $icon_url(任意)
    このメニューに使用されるアイコンへの URL。
    plugins_url関数などを使ってプラグインに内包されたアイコンへのURLを渡します。
    また、Dashiconsのフォントアイコンを使用できます。本記事のサンプルでは、カレンダーのアイコンであるdashicons-calendarを使っています。
  • $position(任意)
    この項目が表示されるメニュー順序の位置。
    デフォルトでは管理メニュー構造の一番下になります。本記事のサンプルでは指定し、一番上に表示しています。メニュー構造にどこに位置づけるかは、下記を参考に設定します。
    • 2 – ダッシュボード
    • 4 – セパレーター
    • 5 – 投稿
    • 10 – メディア
    • 15 – リンク
    • 20 – ページ
    • 25 – コメント
    • 59 – セパレーター
    • 60 – 外観
    • 65 – プラグイン
    • 70 – ユーザー
    • 75 – ツール
    • 80 – 設定
    • 99 – セパレーター
  • $hook_suffix(任意)
    この管理メニューで表示されるページの処理結果を受け取る関数の接頭子。

トップメニューで表示するページを生成する関数を実装します。本記事のサンプルでは、タイトルと簡単な文字列のみを表示しています。

<?php
add_menu_page(
	'管理メニュータイトル'
	, 'テスト用トップメニュー'
	, 'manage_options' 
	, 'test_top_menu' 
	, 'test_menu_contents'
	, plugins_url( 'myplugin/assets/icon.png') // プラグインに内包されたアイコンを指定
	,0
	);

function test_menu_contents() {
		?>
	<div class="wrap">
		<h1>テスト用オプション設定</h1>
		<p>Hello admin menu !!</p>
	</div>
	<?php
}

まとめ

今回は、WordPressの管理コンソールに管理メニューを追加する方法をご紹介しました。PHPによる実装が必要ですが、思ったより簡単だと思っていただけたかと思います。

管理メニューは、サイト運用者に向けたシンプルな画面で十分なため、デザイン性は多く求められない分、機能性を重視して良いでしょう。

第2回〜第4回でサブメニューや管理画面の作り方、設定の更新方法などをご紹介していますので、ぜひご覧ください。

WordPressに独自のサブメニューの追加する

こんにちわ、サイト管理者のわかっち (@wakatchi_tech) です。 WordPressで開発したサイトを運営していると、サイト独自の設定を保存したり、運用しながら設定を変更した…

サブメニューの追加
WordPressに値を設定する独自の管理メニューを追加する

こんにちわ、わかっち (@wakatchi_tech) です。 WordPressで開発したサイトを運営していると、サイト独自の設定を保存したり、運用しながら設定を変更したいことがありま…

設定画面の追加
WordPressにデータを取得する独自の管理メニューを追加する

こんにちわ、わかっち (@wakatchi_tech) です。 WordPressで開発したサイトを運営していると、サイト独自の設定を保存したり、運用しながら設定を変更、サイト内のデータ…

データ取得画面の追加

WordPressの開発者向け公式サイトでは、プラグインハンドブックの管理メニューの開発方法が紹介されています。よろしければこの記事と併せてご参照ください。

Administration Menus – Plugin Handbook | Developer.WordPress.org

Administration Menus are the interfaces displayed in WordPress Administration. They allow you to add option pages for your plugin. Top-Level…

本記事が少しでもお役に立てれば幸いです。

最後までお読みいただき、ありがとうございました!

WordPressでブログを始めるならXserver

取り急ぎブログを始めるなら、レンタルサーバでWordPressを構築することをおすすめします。
サーバの構築が不要のため、レンタルサーバを契約後すぐにWordPressでブログを始められます。

そしてレンタルサーバは、国内シェアNo.1、サーバ速度No.1のXserverがおすすめです!


Webエンジニアを養成するオンラインプログラミングスクールWebエンジニアを養成するためのシステム開発会社初オンラインプラグラミングスクール。まずはオンライン説明会への参加から!
ドメイン取得ならXserver Domain国内最安値!取得も更新も!ドメイン名取得サービス
未経験から初めてのプラグラミングで副業Web制作を勉強・学習して短期間でWeb制作の副業ができるようになる講座。Web制作副業のお仕事を必ずGET!