WordPress5.3で追加されたサイト管理者の確認画面にはカスタム方法も用意されています。
とてもかんたんです。WordPressをカスタマイズしたことがある人は数秒で理解できます。
(WPではおなじみのフィルターフックを使った処理の追加。)
WordPress5からサイトヘルス機能が追加されました。サイトを安全・安心に使うためのものです。
バージョン5.3では、管理者のメールアドレスの改ざんを防ぐため管理者メールの確認画面が追加され、WordPressにログインすると管理画面のダッシュボードに行く前に表示されます。
カスタマイズ機能も用意されました。WordPressのPHPプログラムのカスタマイズでおなじみの方法。
さっそくその方法を見ていきましょう。カスタマイズをしたことのある人ならすぐ分かります。
サイト管理者メール確認画面の機能
まずは確認画面のキャプチャです。WordPressにログインしたら表示されます。
シンプルです。メールアドレスが正しいか?『Yes or No』だけのもの。
機能 | 動作 |
---|---|
正しいメールアドレスです | 確認を完了してダッシュボードに移動。 デフォルトで6ヶ月間非表示。 |
更新 | 『設定 -> 一般』に移動。 管理者メールアドレスを変更する。 |
後で再通知 | ダッシュボードに移動。 3日後に再通知する。 |
『サイト名』に戻る | 公開サイトのホームに移動。 管理画面に次回ログイン時にメール確認画面を表示。 |
次はカスタマイズする方法です。
メール確認画面のカスタマイズ
アクションとフィルターでカスタマイズします。それ用にフックが追加されました。
おなじみですね?
アクション
追加されたアクション・フックは2つです。
admin_email_confirm | メール確認フォームの前 |
admin_email_confirm_form | メール確認フォーム内の最初 |
function my_admin_email_confirm() {
// 処理を書く
echo "<div>サンプルメッセージ</div>";
}
add_action('admin_email_confirm', 'my_admin_email_confirm' );
function my_admin_email_confirm_form() {
// 処理を書く
echo "<div>サンプルメッセージ</div>";
}
add_action('admin_email_confirm_form', 'my_admin_email_confirm_form' );
ソースコード | wp-login.php |
HTMLタグの<form>の前・中・後にそれぞれ処理を追加できます。HTMLを追加するもよし、JavaScriptを埋めるもよし、CSSスタイルを埋めるもよし。
<form>の後ろに追加するときは 'login_footer' を使います。ログイン画面でも使うので必ず条件をつけましょう。
(別の言い方をするとログイン画面と共通のものを挿入できる。)
function my_login_footer_confirm_admin_email() {
// 処理を書く
echo "<div>サンプルメッセージ</div>";
}
if ( 'confirm_admin_email' === $_GET['action'] ) {
add_action('login_footer', 'my_login_footer_confirm_admin_email' );
}
フィルター
正しいメールアドレスを確認したときの期間を変更できます。
(デフォルトは6ヶ月。)
フィルター・フック | admin_email_check_interval |
function myplugin_admin_email_check_interval( $interval ) {
return 2 * MONTH_IN_SECONDS;
}
add_filter( 'admin_email_check_interval', 'myplugin_admin_email_check_interval' );
秒数を指定しますが、定数が用意されているのでそれを使えばかんたん。
定数 | 値 |
---|---|
MINUTE_IN_SECONDS | 分 |
HOUR_IN_SECONDS | 時間 |
DAY_IN_SECONDS | 日 |
WEEK_IN_SECONDS | 週 |
MONTH_IN_SECONDS | 月 |
YEAR_IN_SECONDS | 年 |
// 30分
$time = 30 * MINUTE_IN_SECONDS;
// 2時間
$time = 2 * HOUR_IN_SECONDS;
// 3日
$time = 3 * DAY_IN_SECONDS;
// 10週間
$time = 10 * WEEK_IN_SECONDS;
// 半年
$time = 6 * MONTH_IN_SECONDS;
// 5年
$time = 5 * YEAR_IN_SECONDS;
メールアドレス確認チェックを無効にすることもできます。
add_filter( 'admin_email_check_interval', '__return_false' );
WordPress公式ガイド