WordPressの管理者メールアドレスを変更したい場合、新しいアドレス宛てに確認メールが届いて、そのリンクをクリックしないと反映されない仕組みになっています。
でも、そもそも管理画面にログインできない、セキュリティプラグイン(SiteGuardなど)に弾かれる、承認を省きたい、みたいな状況だとこのフローはちょっと厄介です。
そんな時に使えるのが、FTPだけで完結するfunctions.phpを使った方法。
データベースへの直接アクセスも不要で、FTPソフト(Cyberduck、WinSCPなど)さえあれば作業できます。
逆にFTPがよくわからない場合は、管理画面からも変更可能です。
メリット
- 管理画面へのログインが一切不要
- FTPソフトさえあればOK(SSHやphpMyAdminへのアクセス権も不要)
- 逆にFTPわからない場合は、管理画面からも変更可能
- 確認メールの承認フローも関係なし
デメリット
- コードの消し忘れがあると、アクセスするたびに
admin_emailが上書きされ続ける→必ず最後消すこと! - 編集ミス(括弧の閉じ忘れなど)があるとサイト全体が真っ白になるリスクがある→バックアップで安心
FTPがよく分からない場合は管理画面からでもOK
「FTPソフトの使い方がよく分からない」という場合は、管理画面の「外観→テーマファイルエディター」から、functions.phpを開いて同じ作業ができます。
手順は下記の「管理者メールアドレスを変更する方法」と同じように、FTPで開く代わりに管理画面上でfunctions.phpを直接編集してください。
管理者メールアドレスを変更する方法
1. FTPで対象ファイルを開く
wp-content/themes/使用中のテーマ名/functions.php
子テーマを使っている場合は必ず子テーマ側を編集してください。親テーマを触っても子テーマに上書きされて反映されないことがあります。
2. コードを追加
ファイル冒頭、<?phpの直後にこれを貼り付け。
php
add_action( 'init', function() {
update_option( 'admin_email', 'new-mail-dayo--@example.com' );
delete_option( 'new_admin_email' );
} );
new-mail-dayo--@example.comのところを実際に使いたいアドレスに書き換えて保存する。
使いたいアドレス=変更したいアドレス です。
3. アップロードしてフロント側に1回アクセス
FTPでサーバーにアクセスし、念のため修正前のfunctions.phpを別ファイル名にしてバックアップをとる。
修正後のfunctions.phpをサーバーにアップロードしたら、サイトのトップページなどを表示する(フロント側にブラウザでアクセスする)。
これでinitフックが発火してadmin_emailが更新されます。
4. 確認したらコードを削除
管理画面にアクセスできる場合は、一般設定の「管理者メールアドレス」で反映を確認してください。
メールアドレスが変わっていたらOK!
最後に必ず、functions.phpに追加したコードを消して、もう一度アップロード。
ここを忘れると永久に上書きされ続けるので要注意です。
まとめ
- 管理画面にログインできなくても、FTPで
functions.phpにコードを仕込めばadmin_emailは変更できる - フロント側に1回アクセスすれば反映される、確認メールは一切不要
- 作業後の後片付け(コードの削除)だけは絶対に忘れずに!
以上、WordPressの管理者メールアドレスを承認なしで変更する方法でした!