自動更新のデフォルト設定
WordPress 5.6 から、以下のような変更が加えられていました。
管理画面に WordPress コアバージョンのメジャーバージョン自動更新をオプトインできるようにする為の新しい UI が導入されました。尚、デフォルトでは、メジャーバージョンの自動更新がオプトインされています (放っておくと、勝手にメジャーバージョンがあがる。。。 :cold_sweat: )
そして、実は、WordPress 5.5 からは、上記と同様に、プラグインやテーマの自動更新をオプトイン出来るようにする UI が導入されていました。
プラグインやテーマの自動更新については、デフォルトでは無効になっていて、管理者が手動で有効にしてあげる必要があるようです。
自動更新は...ちょっと...
WordPress コアバージョン (メジャーバージョンは流石に怖い) もプラグインやテーマも自動更新してくれるのは、運用上、非常に有り難いので有効にしておきたいところですが、事前の動作確認無しのアップデートは流石に怖いですよね。。。
ということで、WordPress コアのメジャーバージョンやマイナーバージョンの自動更新や、プラグイン、テーマの自動更新について無効にする設定につい確認しました。
自動更新無効にする方法
wp-config.php に設定するパターン
要件に応じて、以下の何れかを wp-config.php に追記します。
// This site will not receive automatic updates for new versions of WordPress. define( 'AUTOMATIC_UPDATER_DISABLED', true ); // -> WordPress 本体バージョンの自動アップデート及び、プラグインとテーマの自動アップデートを無効 // This site will not receive automatic updates for new versions of WordPress. define( 'WP_AUTO_UPDATE_CORE', false ); // -> WordPress 本体バージョンの自動アップデートの無効 // This site is automatically kept up to date with maintenance and security releases of WordPress only. define( 'WP_AUTO_UPDATE_CORE', minor ); // -> WordPress 本体バージョンのマイナーバージョンアップを有効 // This site is automatically kept up to date with each new version of WordPress. define( 'WP_AUTO_UPDATE_CORE', true ); // -> WordPress 本体バージョンの自動アップデートが有効になる define( 'WP_AUTO_UPDATE_CORE', beta ); // -> WordPress 本体バージョンの自動アップデートが有効になる define( 'WP_AUTO_UPDATE_CORE', rc ); // -> WordPress 本体バージョンの自動アップデートが有効になる
wp-includes/functions.php に設定するするパターン
要件に応じて、以下の何れかを wp-includes/functions.php に追記します。
// Disable major version auto-update // This site is automatically kept up to date with maintenance and security releases of WordPress only. add_filter( 'allow_major_auto_core_updates', '__return_false' ); // -> メジャーバージョンの自動アップデートを無効 // Disable plugins auto-update UI elements. add_filter( 'plugins_auto_update_enabled', '__return_false' ); // -> プラグインの自動アップデートを無効 // Disable themes auto-update UI elements. add_filter( 'themes_auto_update_enabled', '__return_false' ); // -> テーマの自動アップデートを無効
で、どうするか
以下のようなシェルスクリプトを用意してコンテナイメージをビルドする際に、wp-config.php を更新するようにしました。
#!/bin/bash cp -v /usr/src/wordpress/wp-config-sample.php /usr/src/wordpress/wp-config-sample.php.1 awk ' /^\/\*.*stop editing.*/ && c == 0 { c = 1 print "/* Disable Auto Update */" print "define( \047AUTOMATIC_UPDATER_DISABLED\047, true );" print "" } { print } ' /usr/src/wordpress/wp-config-sample.php.1 > /usr/src/wordpress/wp-config-sample.php if [ "$?" == "0" ];then rm -f /usr/src/wordpress/wp-config-sample.php.1 fi
尚、WordPress オフィシャルの Docker イメージを利用している場合、このシェルスクリプトを up-date-wp-config.sh というファイル名で追加して、Dockerfile には以下のように追加しました。
(略) ADD bin/update-wp-config.sh /usr/local/bin/update-wp-config.sh RUN /usr/local/bin/update-wp-config.sh (略)
コンテナを起動すると、wp-config.php は以下のような状態となります。
/* Disable Auto Update */ define( 'AUTOMATIC_UPDATER_DISABLED', true ); // If we're behind a proxy server and using HTTPS, we need to alert WordPress of that fact // see also http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } /* That's all, stop editing! Happy publishing. */
ちゃんと、define( 'AUTOMATIC_UPDATER_DISABLED', true );
が挿入されています。ちなみに、If we're behind a proxy server and using HTTPS
から始まる行については、WordPress コンテナが起動する際に実行される docker-entrypoint.sh
によって挿入されています。
以上
WordPress 三昧な冬休みになりそうです。