5.3の新機能:サイト管理者のメールアドレスを定期的に確認する

説明

WordPress 5.3 Beta 1」に記載されていた「Admin Email Verification」の項目が目に留まる。管理者のメールアドレスを定期的に確認するという仕組みがどんなものなのか気になったので、ちょっと調べてみた。

wp-login.phpが機能拡張

はじめに、この記事は公開された5.3 Beta1をもとにしており、正式リリースの際に変更される可能性があることを予めお断りする。

まずはメールアドレスの確認ページを見てみたいので、ソースコードを調べてみる。wp-login.phpの中にそれっぽい記述が見つかり、管理ページにログインした状態で、ブラウザのアドレスバーに「http://localhost/wp-login.php?action=confirm_admin_email」とタイプする。

メールアドレスの確認ページ

このページで「The emails is correct」ボタンをクリックすると「Dashboard(ダッシュボード)」ページへ遷移する。また「Update」ボタンをクリックすると「General Settings(一般設定)」ページへ遷移するため、この機能の「サイト管理者のメールアドレス」とはログイン中のユーザー(管理者)のものではないことがわかる。

メールアドレスの有効期限

メールアドレスの確認ページが表示されるタイミングは、ログインページでID・パスワード認証した後、管理ページにリダイレクトする直前となる。その際、次の条件を満たしている場合にメールアドレスの確認ページが表示される仕組みになっていた。

  1. ID・パスワード認証したユーザーが管理者('manage_options'権限(能力)を所有する)
  2. 管理者のメールアドレスの確認間隔('admin_email_check_interval'フィルター)が0より大きい(標準で180日)
  3. 管理者のメールアドレスが有効期限が切れている

3の有効期限については、5.3にアップデートした際のデータベース更新により、オプション名'admin_email_lifespan'として180日が設定されている。これによりアナウンス通りに5.3が2019年11月12日に公開され、すぐにサーバーをアップデートしたとしてもメールアドレスの確認ページが表示されるのは2020年5月10日以降となる。サイト管理者としてすぐに動作確認したい場合、テーマのfunctions.phpに次のようなコードを追加し、'admin_email_lifespan'の値を適当に更新すればよい。

update_option( 'admin_email_lifespan', time() + 10 );

確認ページを表示させない

メールアドレスの確認ページを表示させるタイミングは、先の表示条件を示したように'admin_email_check_interval'フィルターを利用することで調整できる。

メールアドレスの確認ページを表示させたくない場合は、次のようにフィルターで0を返せばよい。

add_filter( 'admin_email_check_interval', '__return_zero' );

表示間隔を180日以外にしたい場合も同様だが、その場合はフィルター関数を用意することになる。例えば30日間隔にしたい場合は次のようになる。

function admin_email_check_interval_to_30days( $interval ) {
	return 30 * DAY_IN_SECONDS;
}

add_filter( 'admin_email_check_interval', 'admin_email_check_interval_to_30days' );

なお'admin_email_check_interval'フィルターの値は、メールアドレスの確認ページで「The emails is correct」ボタンをクリックした際に更新されるオプション名'admin_email_lifespan'の値に影響し、それが次回の表示タイミングとなる。


ここで紹介した新機能は「Login rebuilder」が影響を与える可能性があったため率先して調べてみた。とりあえず、最新版のプラグインで問題なく機能することが確認でき、一安心といったところである。


最終更新 : 2019年09月27日 09:14

お勧め

delete_option(2019年4月24日 更新)

bool delete_option( string $option )
サイトオプションを削除する。

flush_rewrite_rules(2015年9月24日 更新)

void flush_rewrite_rules( [ bool $hard = true ] )
リライトルールを更新する。

wp_nonce_tick(2014年5月20日 更新)

int wp_nonce_tick()
nonce用の時間依存値を取得する。

get_privacy_policy_url(2018年5月27日 更新)

string get_privacy_policy_url()
プライバシーポリシーページのURLを取得する。

delete_metadata(2016年2月23日 更新)

bool delete_metadata( string $meta_type, int $object_id, string $meta_key [ , mixed $meta_value = '' [ , bool $delete_all = false ] ] )
メタ情報の値を削除する。