「add_filter」で「auto_update_plugin」を「__return_true」にしても自動更新されないよ・・・
という時の対処法です。
[adsense]
目次
WPプラグインのアップデートを自動更新にする方法
早速、結論です。
mu-plugins/mu-config.phpに以下の記述をする
>mu-pluginsフォルダについてはこちらの記事で解説しています。
mu-pluginsについてまとめると、
・wp-contentフォルダに、mu-pluginsフォルダを作成する
・mu-pluginsフォルダに、phpファイルを作成する(ファイル名は何でもOK。例えばmu-config.php。)
です。
add_filter( 'automatic_updater_disabled', '__return_false' ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' );
ポイントは、1行目です。
2行目がプラグイン更新の自動化、3行目がテーマファイル更新の自動化設定です。
もしこれで1日程度経っても更新されない場合は、mu-pluginsフォルダと、mu-config.phpファイルのパーミッションを変更してみてください。
>パーミッションの変更方法はこちらで解説しています。(FileZilla版)
参考情報というか調べたメモ
上記1行目を書かない状態でプラグインとテーマの自動更新のための設定をしていた(2,3行目)のですが、プラグイン、テーマの更新が自動実行されずに溜まっていくばかりだったので、調べてみました。
「auto_update_plugin」の定義場所
そもそも、このfilter「auto_update_plugin」はどこにあるのか、から調査開始。
ググって最初に見つけたサイトがここです。
auto_update_{$type} WordPress hook details — Adam Brown, BYU Political Science
WordPressのバージョン4.4までは、「wp-admin/includes/class-wp-upgrader.php」にある、と書いてありますが、現在のWPは4.9。class-wp-upgrader.phpファイルはあったのですが、「auto_update_」filterはありませんでした。
さらに調べたところ、こちらのサイトにたどりつきました。
wp-admin/includes/class-wp-automatic-updater.php | WordPress Developer Resources
サイトタイトルのとおり、「wp-admin/includes/class-wp-automatic-updater.php」にありました。
これでとりあえず、「auto_update_plugin」filterがいつの間にか無くなっていて、そもそも使えないじゃないか、という事態は回避できたので、ちょっと安心。(ちなみに2017年頃の英語掲示板で、「4時間かけて探したけど見つからない、いつFireされたんだ。。。」という書き込みがあり、Fire説が頭から離れてませんでした。)
class-wp-automatic-updater.phpの中身を確認する
175行目あたりに
$update = apply_filters( "auto_update_{$type}", $update, $item );
がありますので、ここが実行されていないとしたら、その前でExitしているのだろうと思い、上を見ていくと、それっぽいところを発見。
if ( $this->is_disabled() ) return false;
ということで、is_dislabled()を見てみると、
$disabled = defined( 'AUTOMATIC_UPDATER_DISABLED' ) && AUTOMATIC_UPDATER_DISABLED; return apply_filters( 'automatic_updater_disabled', $disabled );
とあります。
これはつまり、「automatic_updater_disabled」が「true」なら「auto_update_plugin」は実行されない、ということ(なんだろうなと思った)。
コメント