WordPressを運営していると、WordPress本体やプラグイン、テーマが自動更新されたときに、更新完了を知らせるメールが届くことがあります。
自動更新自体は便利なので、そのまま利用したい。
でも、
「更新されたことは管理画面で確認できるので、毎回メールが届くのはちょっとうっとうしい……」
という人もいるのではないでしょうか。
私もWordPressでブログを運営していて、自動更新は有効にしておきたい一方、自動更新のたびに届くメールは不要だと感じていました。
そこで調べてみたところ、WordPressには自動更新の通知メールだけを停止するためのフィルターフックが用意されています。
この記事では、
- WordPress本体の自動更新メールを停止する方法
- プラグインの自動更新メールを停止する方法
- テーマの自動更新メールを停止する方法
- WordPressテーマ「SWELL」を使っている場合の設定方法
- functions.phpのどこにコードを追加すればよいか
- 自動更新そのものは停止されないのか
について、実際に追加するコードとともに解説します。
結論から言えば、子テーマのfunctions.phpに3行のコードを追加するだけです。
WordPressの自動更新メールは停止できる
WordPressでは、バックグラウンドで自動更新が行われたあとに、更新結果をメールで知らせる仕組みがあります。
WordPress本体については、自動更新が成功した場合だけでなく、失敗した場合などにも通知メールが送信される仕組みになっています。
また、プラグインやテーマについても、自動更新後に通知メールが送信されます。
WordPressには、これらの通知メールを送信するかどうかを制御するフィルターフックが用意されています。
そのため、自動更新は有効にしたまま、通知メールだけを停止することができます。
WordPress公式の開発者向けドキュメントでも、以下のフィルターフックが提供されています。
auto_core_update_send_email→ WordPress本体auto_plugin_update_send_email→ プラグインauto_theme_update_send_email→ テーマ
つまり、今回やりたいことには、この3つを利用すればOKです。
自動更新メールを停止するコード
追加するコードは以下の3行です。
“`php
// WordPress本体の自動更新通知メールを停止
add_filter( ‘auto_core_update_send_email’, ‘__return_false’ );
// プラグインの自動更新通知メールを停止
add_filter( ‘auto_plugin_update_send_email’, ‘__return_false’ );
// テーマの自動更新通知メールを停止
add_filter( ‘auto_theme_update_send_email’, ‘__return_false’ );
これだけで、
| 自動更新の対象 | 自動更新 | 通知メール |
|---|---|---|
| WordPress本体 | 実行する | 送らない |
| プラグイン | 実行する | 送らない |
| テーマ | 実行する | 送らない |
という状態にできます。
ここで重要なのは、このコードは自動更新そのものを停止するコードではないということです。
あくまでも、
「自動更新が実行されたあとに送られる通知メールを停止する」
ためのコードです。
そのため、自動更新を便利に利用しながら、メールだけを減らしたい人に向いています。
WordPress本体の自動更新メールを停止する
まず、WordPress本体の自動更新メールを停止するコードです。
add_filter( 'auto_core_update_send_email', '__return_false' );auto_core_update_send_emailは、WordPress本体の自動更新後にメールを送信するかどうかを制御するフィルターです。
WordPress公式ドキュメントでも、このフィルターについて「自動バックグラウンド更新後にメールを送信するかどうかをフィルタリングするもの」と説明されています。
このコードを追加すると、WordPress本体の自動更新に関する通知メールを停止できます。
プラグインの自動更新メールを停止する
次に、プラグインです。
add_filter( 'auto_plugin_update_send_email', '__return_false' );このコードによって、プラグインの自動更新後に送られる通知メールを停止できます。
WordPressでは、プラグインごとに自動更新を有効にすることができます。
自動更新は便利なので、
「プラグインの自動更新はONにしておきたい。でも更新のたびにメールはいらない」
という場合には、この方法が適しています。
テーマの自動更新メールを停止する
テーマについては、以下のコードを追加します。
add_filter( 'auto_theme_update_send_email', '__return_false' );これでテーマの自動更新後に送信される通知メールを停止できます。
SWELLを使っている場合はどこにコードを追加する?
ここからは、WordPressテーマとしてSWELLを使っている場合について説明します。
SWELLには親テーマと子テーマがあります。
WordPressでSWELL CHILD(子テーマ)を利用しているのであれば、今回のコードは親テーマではなく、子テーマのfunctions.phpに追加するのがおすすめです。
親テーマのfunctions.phpに直接コードを追加すると、テーマをアップデートした際に変更した内容が上書きされてしまう可能性があります。
一方、子テーマのfunctions.phpに追加しておけば、親テーマであるSWELLがアップデートされても、基本的に自分で追加したコードを維持できます。
そのため、
SWELL CHILDを利用しているなら、SWELL CHILDのfunctions.phpに追加する
と覚えておけばよいでしょう。
SWELL CHILDのfunctions.phpに追加する手順
WordPressの左メニューから、「外観」>「テーマファイルエディター」をクリックします。
テーマが「SWELL CHILD」になっていることを確認し、functions.phpをクリックします。

SWELL CHILDのfunctions.phpには、もともと子テーマ用のコードが記述されています。

例えば、以下のようなコードが入っています。
<?php
/* 子テーマのfunctions.phpは、親テーマのfunctions.phpより先に読み込まれることに注意してください。 */
/**
* 親テーマのfunctions.phpのあとで読み込みたいコードはこの中に。
*/
// add_filter('after_setup_theme', function(){
// }, 11);
/**
* 子テーマでのファイルの読み込み
*/
add_action('wp_enqueue_scripts', function() {
$timestamp = date('Ymdis', filemtime(get_stylesheet_directory() . '/style.css'));
wp_enqueue_style('child_style', get_stylesheet_directory_uri() . '/style.css', [], $timestamp);
/* その他の読み込みファイルはこの下に記述 */
}, 11);この場合、最後の }, 11); の下に追加するのが分かりやすいでしょう。
以下のようにコードを追加します。

実際のコードはこちら↓
<?php
/* 子テーマのfunctions.phpは、親テーマのfunctions.phpより先に読み込まれることに注意してください。 */
/**
* 親テーマのfunctions.phpのあとで読み込みたいコードはこの中に。
*/
// add_filter('after_setup_theme', function(){
// }, 11);
/**
* 子テーマでのファイルの読み込み
*/
add_action('wp_enqueue_scripts', function() {
$timestamp = date('Ymdis', filemtime(get_stylesheet_directory() . '/style.css'));
wp_enqueue_style('child_style', get_stylesheet_directory_uri() . '/style.css', [], $timestamp);
/* その他の読み込みファイルはこの下に記述 */
}, 11);
// WordPress本体の自動更新通知メールを停止
add_filter( 'auto_core_update_send_email', '__return_false' );
// プラグインの自動更新通知メールを停止
add_filter( 'auto_plugin_update_send_email', '__return_false' );
// テーマの自動更新通知メールを停止
add_filter( 'auto_theme_update_send_email', '__return_false' );このように、既存のコードを変更するのではなく、ファイルの最後に3つのadd_filterを追加するだけで構いません。
最後に、画面下部の「ファイルを更新」ボタンをクリックしてください。
更新に成功すると、以下のように「ファイルの編集に成功しました」のメッセージが出ます。

add_actionの中に入れなくてもいいの?
ここでPHPに詳しくない人が疑問に思うかもしれません。
先ほどのコードには、
add_action('wp_enqueue_scripts', function() {
// 処理
}, 11);という記述があります。
そのため、
「今回のコードも、この中に入れるのでは?」
と思うかもしれません。
しかし、今回追加するコードはwp_enqueue_scriptsとは関係ありません。
そのため、以下のようにadd_actionの中に入れる必要はありません。
add_action('wp_enqueue_scripts', function() {
// ここに入れる必要はない
});既存の処理が終わった後に、独立したコードとして追加すればOKです。
}, 11);
// 自動更新通知メールを停止
add_filter( 'auto_core_update_send_email', '__return_false' );
add_filter( 'auto_plugin_update_send_email', '__return_false' );
add_filter( 'auto_theme_update_send_email', '__return_false' );このように分けておくと、後から見たときにも何のためのコードなのか分かりやすくなります。
3つ全部入れる必要がある?
これは、自分が停止したいメールの種類によって変わります。
例えば、プラグインの通知メールだけを停止したいのであれば、
add_filter( 'auto_plugin_update_send_email', '__return_false' );だけで構いません。
テーマだけなら、
add_filter( 'auto_theme_update_send_email', '__return_false' );です。
ただし、
WordPress本体、プラグイン、テーマの自動更新メールを全部停止したい
のであれば、3つとも追加してください。
個人的には、自動更新は利用するものの「自動更新の通知メールは不要」という目的なら、3つとも追加しておくと分かりやすいと思います。
自動更新そのものは停止されないので注意
今回の方法で最も重要なポイントです。
このコードを追加しても、WordPress本体やプラグイン、テーマの自動更新そのものは停止されません。
例えば、
add_filter( 'auto_plugin_update_send_email', '__return_false' );は、
プラグインを自動更新しない
という意味ではありません。
意味としては、
プラグインを自動更新した後の通知メールを送信しない
です。
したがって、
自動更新:ON
通知メール:OFF
という設定にできます。
「自動更新は便利なので利用したい。でもメール通知までは必要ない」という人には、ちょうどよい設定です。
functions.phpを編集するときの注意点
functions.phpはWordPressの動作に関係する重要なファイルです。
PHPの記述を間違えると、サイトが正常に表示されなくなる可能性があります。
そのため、編集する前に以下の点に注意してください。
1.親テーマではなく子テーマを編集する
SWELL CHILDを使用している場合は、
SWELL CHILD → functions.php
を編集します。
SWELL本体のfunctions.phpを直接編集するのは避けましょう。
2.既存のコードを削除しない
今回の場合は、既存のfunctions.phpのコードを削除する必要はありません。
ファイルの最後に、以下を追加するだけです。
// WordPress本体の自動更新通知メールを停止
add_filter( 'auto_core_update_send_email', '__return_false' );
// プラグインの自動更新通知メールを停止
add_filter( 'auto_plugin_update_send_email', '__return_false' );
// テーマの自動更新通知メールを停止
add_filter( 'auto_theme_update_send_email', '__return_false' );3.コードを追加する前にバックアップしておく
念のため、変更前のfunctions.phpをコピーして保存しておくと安心です。
万が一問題が発生した場合でも、元の状態に戻せます。
こんな人におすすめ
今回紹介した方法は、特に次のような人におすすめです。
- WordPress本体の自動更新を利用している
- プラグインの自動更新を利用している
- テーマの自動更新を利用している
- 自動更新そのものは止めたくない
- 更新通知メールが頻繁に届くのが気になる
- メールではなくWordPressの管理画面で更新状況を確認したい
- SWELLを子テーマと一緒に利用している
反対に、
「自動更新自体を停止したい」
という人は、今回のコードでは目的を達成できません。
今回のコードはあくまでも通知メールを停止するためのものです。
まとめ
WordPressでは、WordPress本体・プラグイン・テーマの自動更新が行われた際に、通知メールが送信されます。
このメールが不要な場合は、functions.phpに以下の3つのコードを追加することで、自動更新通知メールを停止できます。
// WordPress本体の自動更新通知メールを停止
add_filter( 'auto_core_update_send_email', '__return_false' );
// プラグインの自動更新通知メールを停止
add_filter( 'auto_plugin_update_send_email', '__return_false' );
// テーマの自動更新通知メールを停止
add_filter( 'auto_theme_update_send_email', '__return_false' );SWELLを使用していて子テーマの「SWELL CHILD」を利用している場合は、SWELL CHILDのfunctions.phpに追加するのがおすすめです。
追加場所は、既存のコードの最後で問題ありません。
}, 11);
// ここから追加
add_filter( 'auto_core_update_send_email', '__return_false' );
add_filter( 'auto_plugin_update_send_email', '__return_false' );
add_filter( 'auto_theme_update_send_email', '__return_false' );なお、このコードは自動更新を停止するものではありません。
「自動更新はこれまでどおり実行する。ただし、自動更新されたことを知らせるメールはいらない」という設定です。
WordPress公式の開発者向けドキュメントでも、これらのフィルターフックが自動更新後のメール送信を制御するものとして案内されています。
そのため、自動更新の利便性は維持しつつ、不要な通知メールだけを減らしたい人には便利な方法です。

