WordPress では自動アップデートの機能が搭載されているが、標準で自動的に更新されるのはマイナーアップデートのみとなっている。メジャーアップデートやプラグイン・テーマなどの他の項目については手動でアップデートを行う必要がある。
このページでは WordPress でマイナーアップデート以外の更新も自動化する方法を紹介しよう。
functions.php を編集して自動更新する方法
wordpress に用意されている add_filter 関数を利用して各種更新を行う事ができる。functions.php などに記述しよう。
例えばメジャーアップデートを有効にする場合は以下のように allow_major_auto_core_updates に __return_true を与える。
add_filter('allow_major_auto_core_updates', '__return_true');
マイナーアップデートを明示的に有効にする場合は以下のコードを書く。多分必要無い。
add_filter('allow_minor_auto_core_updates', '__return_true');
同様にプラグイン・テーマの場合は以下のように記述する。
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
これらを書いておけばアップデートがあった際に自動で更新されるはずだ。
wp-cli と cron を利用して自動更新する方法
WordPress を操作するコマンドラインツール wp-cli を利用すれば本体やプラグインなどの更新もコマンドラインで実行可能だ。
WordPress をコマンドラインから操作する wp-cli | Lonely Mobiler例えば本体を更新する際には以下のようなコマンドを実行する。
$ wp core update
$ wp core update-db
このコマンドをプラグインやテーマなどとあわせて crontab に登録してやれば WordPress を自動更新できる。時間指定できるのでアクセス数が少ない時間などに自動的に実行できる。
以下のようなファイルを作成し、実行権限を与えよう。
$ cat ~/bin/wordpress-update.sh
/usr/local/bin/wp plugin update --all --path=/home/username/public_html/example.com/
/usr/local/bin/wp theme update cocoon-master --path=/home/username/public_html/example.com/
/usr/local/bin/wp core update --path=/home/username/public_html/example.com/
/usr/local/bin/wp core update-db --path=/home/username/public_html/example.com/
$
$ ls -l ~/bin/wordpress-update.sh
-rwxrwxr-x 1 username username 330 Feb 28 13:26 wordpress-update.sh
wp コマンドを wordpress のディレクトリ以外で実行するには --path を利用してパスを指定する必要がある。
このファイルを crontab に登録する。
$ crontab -l
0 3 * * * /home/username/bin/wordpress-update.sh
これで OK, これで毎日自動的に更新される。
ただし自動で更新した結果、何等かの不具合が発生する可能性がある点については気を付けよう。