こんにちは、T田です。
WordPressの管理画面をカスタマイズしているときに、ユーザに対して

  • 処理結果を通知したい
  • 注意喚起を表示したい

などと感じる場面はありませんか?

今回は、それをプラグインを使わずに実現する方法をお伝えします。

目次

  1. はじめに
  2. admin_noticesアクションにフック
  3. 特定のページにだけ通知
  4. 閉じるボタンを追加
  5. おわりに

1.はじめに

このホームページはWordPressで作成されているのですが、その管理画面をカスタマイズする機会がありました。
その際、サーバで処理した結果をユーザに通知したいと思い、プラグインを使わずに実現する方法を調べてみました。
ちなみに「通知」と言っているのは、以下のようなメッセージのことです。

plugin_active

2.admin_noticesアクションにフック

WordPressの管理画面にメッセージを通知しているのは、「admin_notices」というアクションです。
参照:WordPress Codex「admin_notices」
よって、通知を表示する関数を作成してこのアクションにフックすれば良さそうです。
functions.phpに以下のコードを追記します。

<?php
function showAdminNotices()
{
	$html  = '<div class="updated">';
	$html .= '  <p>テストメッセージ</p>';
	$html .= '</div>';

	echo $html;
}
add_action( 'admin_notices', 'showAdminNotices' );
?>

 
これで、管理画面の全ページにメッセージが通知されるようになりました。

dashboard_notice

page-list_notice
なお、<div class="updated"><div class="error">にすればエラーメッセージ風に表示できます。

dashboard-err_notice

3.特定のページにだけ通知

先ほどのコードだと、管理画面の全ページにメッセージが通知されてしまいます。
それが目的であれば良いですが、特定のページにだけ通知したい場合もあると思います。
そんなときは、WordPressのグローバル変数$pagenowが便利です。
参考:WordPress私的マニュアル「$pagenow」

固定ページや投稿ページの判定はis_page()関数やis_single()関数が用意されていますが、管理画面のどのページが判定する関数は見つけられませんでしたので、この$pagenow変数を使用します。

例として、新規投稿画面に注意喚起を表示するコードに修正しました。

<?php
function showAdminNotices()
{
	global $pagenow;
	if ( $pagenow != 'post-new.php' ) {
		return;
	}

	$html  = '<div class="error">';
	$html .= '  <p>「抜粋」は必ず入力してください!</p>';
	$html .= '</div>';

	echo $html;
}
add_action( 'admin_notices', 'showAdminNotices' );
?>

 
このように、新規投稿画面にのみ表示されるようになりました。

post-new_notice

4.閉じるボタンを追加

WordPressが表示してくれる通知には、以下のように閉じるボタンがついています。

plugin_active_close
このボタンを追加するには、コードを以下のように修正します。

<?php
function showAdminNotices()
{
	global $pagenow;
	if ( $pagenow != 'post-new.php' ) {
		return;
	}

	$html  = '<div class="error notice is-dismissible">';
	$html .= '  <p>「抜粋」は必ず入力してください!</p>';
	$html .= '  <button type="button" class="notice-dismiss">';
	$html .= '    <span class="screen-reader-text">この通知を非表示にする</span>';
	$html .= '  </button>';
	$html .= '</div>';

	echo $html;
}
add_action( 'admin_notices', 'showAdminNotices' );
?>

まず、divタグのclass属性にnoticeis-dismissibleを追加します。
次に、class属性にnotice-dismissを持たせたbuttonタグを追加します。

これで、閉じるボタンが表示されるようになりました。

post-new_notice_close

5.おわりに

今回は、WordPressの管理画面にプラグインを使わずにメッセージを通知する方法についてお伝えしました。
閉じるボタンの実装についてはあまり情報が無いので、参考にしていただければ幸いです。
ではまた次のブログでお会いしましょう!


<スポンサーリンク>