WordPressブログの始め方 >>

WordPressの自動更新メールを停止する方法|SWELLならfunctions.phpに3行追加するだけ

当ページのリンクには広告が含まれています。

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公式の開発者向けドキュメントでも、これらのフィルターフックが自動更新後のメール送信を制御するものとして案内されています。

そのため、自動更新の利便性は維持しつつ、不要な通知メールだけを減らしたい人には便利な方法です。


ランキングサイト参加中!
応援ポチっとしてもらえたら嬉しいです♪

ブログランキング・にほんブログ村へ 人気ブログランキング

本サイトのブログテーマ SWELL公式サイトはこちらから!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次