WordPress 6.4 で追加された wp_admin_notice() で管理画面に通知を表示してみた


  1. Staff Blog
  2. WordPress
  3. WordPress 6.4 で追加された wp_admin_notice() で管理画面に通知を表示してみた

プラグインなどを開発している人は、アクションフック admin_notices を使っていろいろ通知を表示していると思います。

しかしながら、admin_notices はアクションフックなだけなので、実際に表示する通知のHTMLは自前で書く事になり、手間だったり一貫性がなくなったりします。

そこで、WordPress 6.4 では wp_get_admin_notice() と wp_admin_notice() という2つの関数が追加されました。

wp_get_admin_notice()

  • マークアップされた管理画面用の通知を返します。
  • エスケープされた値が帰ってくるとは限らないので、出力の際は適切にエスケープする必要があります。

wp_admin_notice()

  • マークアップされた管理画面用の通知を出力します。
  • 中身は wp_get_admin_notice() で、出力前に wp_kses_post() でエスケープされます。

パラメーターはいろいろあるのですが、そちらは公式のドキュメントを見ていただくとしてとりあえず使ってみましょう。

通知の表示

とりあえず、表示する場所は従来通り admin_notices で良いので、アクションフック admin_notices の場所に wp_admin_notice() でアラートを表示します。公式ドキュメントに記載されていた内容を中に入れるとこんな感じ。

add_action( 'admin_notices', function(){
	wp_admin_notice(
		__( 'Plugin update failed.', 'my-text-domain' ),
		array(
		  'type'               => '',
		  'dismissible'        => true,
		  'additional_classes' => array( 'inline', 'notice-alt' ),
		  'attributes'         => array( 'data-slug' => 'plugin-slug' )
		)
	  );
});

なるほど、よく見るアラートですね。

出力されているHTMLを見てみると、追加指定したクラス inline と notice-all が反映されており、属性 data-slug="plugin-slug" も追加されています。

引数

あらためて引数を見てみると以下のような感じになります。

  • $message – アラートメッセージ
  • $args
    • string $type – アラートタイプ。よくある success / info / warning / error が使える。
    • bool $dismissible – 通知を消せるようにするかどうか
    • array $additional_classes – 任意でクラス名を追加したい場合
    • array $attributes – 任意で属性を追加したい場合
    • bool $paragraph_wrap – 通知を <p> タグでラップするかどうか。デフォルトは true

フィルターフック

新しく追加された wp_get_admin_notice() 関数内部にはフィルターフックが用意されているので、改変も可能です。

wp_admin_notice_args フィルターでパラメーターを改変できるので、以下のように additional_classes に クラス名を追加したりする事ができます。

add_filter( 'wp_admin_notice_args', 'myprefix_add_class_to_warnings' );
function myprefix_add_class_to_warnings( $args ) {
  if ( 'warning' === $args['type'] ) {
    $args['additional_classes'][] = 'my-class';
  }
 
  return $args;
}

所感

なるほど、とりあえず毎回「通知のマークアップってどうやってたっけ?」と他のプラグインとか見直したりしていたので、統一にしやすいのは便利ですね。

注意事項

あくまで 6.4 からの新しい関数なので、6.3以前で使うと fatal error になってしまいます

使う場合は WordPressのバージョンで条件分岐した上で使うか、function_exists() を忘れないようにしましょう。

現場からは以上です。

この記事を書いた人

石川栄和代表取締役
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
WordCamp Tokoy 2023 セッションスピーカー
WordCamp Asia 2023 セッションスピーカー(LT)
WordCamp Niigata 2019 セッションスピーカー
WordCamp Haneda 2019 セッションスピーカー
WordCamp Osaka 2018 セッションスピーカー
WordCamp Kyoto 2017 セッションスピーカー

ご好評につきキャンペーン期間延長!
Vektor Passport


を買って

Evergreen
無料でダウンロードしよう

Lightningで使えるおしゃれなデザインスキン / コンテンツデータを試せるチャンス!


PAGE TOP

このデモサイトは Vektor,Inc. のテーマとプラグインで構築されています。ご購入や詳細情報は下記のリンクもご参考ください。