管理画面で通知を出す方法

管理画面で通知を出す方法

wordpressの管理画面で更新した際や、エラーがあった際の通知の出し方を紹介します。

通知があるだけで更新されたのか、されていないのか体感的にわかりやすくなります。

管理画面をカスタマイズする場合は実装しておくと親切です。

管理画面で通知を出す方法

以下のコードで表示が可能になります。

add_action( 'admin_notices', function() {
		?>
		<div class="notice notice-success is-dismissible">
			<p>更新しました</p>
		</div>
		<?php
} );

「admin_notices」にフックすることで表示することができます。

クラス名はwordpress側で用意しているものを利用するのが便利です。

<div>に「notice」クラスを付与することでよく見るバナー型の表示にすることができます。

加えて「notice-○○」という形のクラスを付与することで通知左側の色を変更することができます。

notice-success」・・・緑色。更新時や成功時のイメージ。

notice-info」・・・青色。案内やレビュー求める際に使われます。

notice-warning」・・・黄色。注意などに使用します。

notice-error」・・・赤色。警告や失敗など致命的な際に使用します。

また、これらに加えて「notice-alt」を使用すると背景色が上で示した色の同系色になります。

さらに、「is-dismissible」を付与すると「閉じるボタン」を付けることができます。

以下一覧で確認してください。

admin-notice - variety

submitボタン押された後に表示するには

いちばん使いたいタイミングとしては、独自の設定画面等で設定を更新した際ではないかなと思います。

状況としては「オプション値が更新された場合」に当たります。

以下で行うと実現できます。

add_action( 'update_option_my_setting_options', function() {
	update_option( '_my_setting_change_flag', true );
});

add_action( 'admin_notices', function() {
	$flag = get_option( '_my_setting_change_flag' );
	if( $flag ) {
		?>
		<div class="notice notice-success is-dismissible">
			<p>更新しました</p>
		</div>
		<?php
		update_option( '_my_setting_change_flag', false );
	}
} );

オプション「my_setting_options」が更新された際にオプション「_my_setting_change_flag」を「true」にしておきます。

通知を表示する条件として「_my_setting_change_flag」が「true」の場合としておきます。

表示した場合には「_my_setting_change_flag」を「flase」として表示しないようにしておきます。

その他にもsubmit_buttonが押された際に「settings-updated」が「ture」でGETで送られるてくるので「$_GET[‘settings-updated’]で取得、判断して表示する方法もあります。

上記で紹介したオプションの更新で判断する方法は「値が更新(変更)された際」に表示されます

$_GET[‘settings-updated’]は「submitボタン」が押された際に表示します。(値に変更があったかは見ていません。)

さいごに

今回はsubmitボタンを押した際の例を挙げました。

その次に多い例としては値にエラーがあった際だと思います。この場合は「register_setting」のサニタイズ関数内でadd_settings_errorなどで処理するのがベストだと思います。