• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

株式会社ハイファイブクリエイト

東京都を拠点にWebサイト制作やシステム構築、WordPress保守管理やウェブコンサルティングを提供。

  • SERVICE
  • ABOUT
  • WORKS
  • BLOG
  • NEWS
  • CONTACT
ホーム / ブログ / WordPress / WordPressのプラグイン自動更新のロールバック機能が正しく動くのか確認してみた

WordPressのプラグイン自動更新のロールバック機能が正しく動くのか確認してみた

池田祐太郎 | 2024年8月7日 公開 コメントを書く

先月の7月14日にWordPress 6.6「Dorsey」がリリースされました。デザインセットの追加、サイトエディターで作られたページのプレビュー強化などがありますが、個人的にはプラグインが自動更新されたあとにエラーが発生した際に以前のバージョンに戻ってくれるロールバック機能が一番でした。

このロールバック機能がちゃんと動くのが気になったため、開発環境で問題なく動くのか検証しました。結論から言うとちゃんと動いてくれました。その過程と裏側の動きなどをご紹介します。

目次

  • 1 WordPress 6.6 で追加された新機能、自動更新のロールバック機能
  • 2 検証用のプラグインを用意し、自動更新を発生させ確認
    • 2.1 ロールバック確認の概要
    • 2.2 検証用プラグインはバージョンを示し、更新後はわざとエラーを発生させる内容
    • 2.3 Githubのリポジトリにエラーが発生するVer1.0.1をアップする
    • 2.4 WP-cronを操作して自動更新がすぐ実行されるように変更する
  • 3 ロールバック機能が正しく動作し、エラー後以前のプラグインに戻っていることを確認
    • 3.1 メールでも自動更新が失敗したことが通知される
    • 3.2 ロールバック成功のため、エラーは発生していない
  • 4 手動更新は失敗するため、自動更新の方が安全
  • 5 Warningエラーだとロールバックされない
  • 6 WordPress 6.6の新機能、ロールバック機能を使ってより安全にWordPressを管理する

WordPress 6.6 で追加された新機能、自動更新のロールバック機能

2024年7月14日、WordPress 6.6がリリースされました。

WordPress 6.6 の「ドーシー」はアメリカのビッグバンドのリーダー、Tommy Dorseyの名前から取ったコードネーム。

6.6で追加された内容を見ていると、ブロックテーマの改良が多いイメージですが、ロールバック機能が一際気になりました。

6.6で追加されたロールバック機能とは、プラグインやテーマを自動更新に設定している場合、自動更新が実施されたあとにエラーなどがありウェブサイトが見られなくなってしまった場合、自動で以前利用していたバージョンに戻ってくれるというスグレモノ。

「自動更新したいが、更新後にエラーでサイトにアクセスできない状態になるのが懸念」

こういった理由で自動更新を利用できなかったケースにおいて、今回のロールバック機能があることでもし問題があってエラーになってしまった場合でも、以前のバージョンに戻ってくれるのはありがたいですね。

検証用のプラグインを用意し、自動更新を発生させ確認

「本当にロールバック機能は問題なく動くのか?」が真っ先に感じた懸念でした。そこで開発環境でプラグインを作成し、自動更新を実行させ、更新後のバージョンに致命的エラーを発生させることで、正しくロールバック機能が動作しているのか検証しました。

ロールバック確認の概要

  • 開発環境: ローカル(Localで作成)に開発環境を用意。
  • プラグイン: 検証用のプラグイン「Custom Test Plugin」を作成し、更新後のバージョンにはFatalエラーを発生させるコードを記述した。
  • 自動更新: Githubにリポジトリを作成し、Git updaterを使って自動更新をできる仕組みを構築。(Git Updaterは、GitHub等のリポジトリにホスティングされているプラグインやテーマを自動的に更新するためのWordPressプラグイン。ここでは設定方法は割愛します)
  • WP-cronで自動更新を発生させる: WordPressのcronジョブである WP-cron が自動更新を制御しているため、確認するにはWP-cronを操作して実行時間を調整する必要があります。(待てないので)操作にはWP Crontrolプラグインを利用)
プラグインを作成し、自動更新を有効化した状態。

検証用プラグインはバージョンを示し、更新後はわざとエラーを発生させる内容

プラグインはバージョン情報を表示するだけの簡単なコードとし、

■Ver 1.0.0

function basic_functionality() {
    if (is_admin()) {
        echo "This is version 1.0.0";
    }
}
add_action('init', 'basic_functionality');

■Ver 1.0.1

自動更新後のバージョンでは意図的にFatalエラーが発生するように設定しました。

function basic_functionality() {
    if (is_admin()) {
        echo "This is version 1.0.1";
    }

    // Intentional error to trigger rollback on both admin and frontend
    trigger_error("This is a test error for rollback functionality in version 1.0.1.", E_USER_ERROR);
}
add_action('init', 'basic_functionality');

Githubのリポジトリにエラーが発生するVer1.0.1をアップする

このVer 1.0.1をGithubのリポジトリに上げておき、自動更新後にプラグインが置き換わるように設定しました。自動更新の仕組みはGit updaterを利用します。最初、管理画面だけエラーを発生させるコードにしていたのですが、それだとロールバックされなかったため、フロントエンド側でもエラーが発生されるように変更しました。

左がVer1.0.0、右がエラーが発生されるVer1.0.1

WP-cronを操作して自動更新がすぐ実行されるように変更する

wp_version_checkフックが実行されることで、WordPressのプラグインやテーマに新しいバージョンがあるかどうか確認されます。このフックは1日2回実行されることとなっていたため、一度実行すると次は12時間後。検証時にはそんな時間当然待てないため、WP crontrolプラグインを利用し、WP-cronの時間をすぐに実行されるように変更しました。

WP crontrolを使うとWP-cronジョブの実行時間を自由に変更できる。

今すぐ実行することも可能ですが、自動更新が有効となるかどうかを確かめる必要があるため、2-3分後に実行するようにWP-cronジョブ実行時間を変更しました。

これで準備は整いました。果たして結果は……?

ロールバック機能が正しく動作し、エラー後以前のプラグインに戻っていることを確認

設定した時間になると自動更新が動作します。直後、デバッグログを確認しました。ちょっと長いですが全体を掲載します。

[07-Aug-2024 07:12:18 UTC] Automatic updates starting...
[07-Aug-2024 07:12:18 UTC]   Automatic plugin updates starting...
[07-Aug-2024 07:12:18 UTC]     Upgrading plugin 'wordpress6.6-rollback-test'...
[07-Aug-2024 07:12:20 UTC]     Plugin 'wordpress6.6-rollback-test' has been upgraded.
[07-Aug-2024 07:12:22 UTC]     Scraping home page...
[07-Aug-2024 07:12:22 UTC] PHP Fatal error:  This is a test error for rollback functionality in version 1.0.1. in /Users/yutaro/Local Sites/development/app/public/wp-content/plugins/wordpress6.6-rollback-test/custom-plugin.php on line 19
[07-Aug-2024 07:12:22 UTC] PHP Stack trace:
[07-Aug-2024 07:12:22 UTC] PHP   1. {main}() /Users/yutaro/Local Sites/development/app/public/index.php:0
[07-Aug-2024 07:12:22 UTC] PHP   2. require() /Users/yutaro/Local Sites/development/app/public/index.php:17
[07-Aug-2024 07:12:22 UTC] PHP   3. require_once() /Users/yutaro/Local Sites/development/app/public/wp-blog-header.php:13
[07-Aug-2024 07:12:22 UTC] PHP   4. require_once() /Users/yutaro/Local Sites/development/app/public/wp-load.php:50
[07-Aug-2024 07:12:22 UTC] PHP   5. require_once() /Users/yutaro/Local Sites/development/app/public/wp-config.php:120
[07-Aug-2024 07:12:22 UTC] PHP   6. do_action($hook_name = 'init') /Users/yutaro/Local Sites/development/app/public/wp-settings.php:700
[07-Aug-2024 07:12:22 UTC] PHP   7. WP_Hook->do_action($args = [0 => '']) /Users/yutaro/Local Sites/development/app/public/wp-includes/plugin.php:517
[07-Aug-2024 07:12:22 UTC] PHP   8. WP_Hook->apply_filters($value = '', $args = [0 => '']) /Users/yutaro/Local Sites/development/app/public/wp-includes/class-wp-hook.php:348
[07-Aug-2024 07:12:22 UTC] PHP   9. basic_functionality('') /Users/yutaro/Local Sites/development/app/public/wp-includes/class-wp-hook.php:324
[07-Aug-2024 07:12:22 UTC] PHP  10. trigger_error($message = 'This is a test error for rollback functionality in version 1.0.1.', $error_level = 256) /Users/yutaro/Local Sites/development/app/public/wp-content/plugins/wordpress6.6-rollback-test/custom-plugin.php:19
[07-Aug-2024 07:12:22 UTC] '###### wp_scraping_result_start:cd2ebe28c190573c672288b815495d23 ######
{"type":"256","message":"This is a test error for rollback functionality in version 1.0.1.","file":"wp-content\\/plugins\\/wordpress6.6-rollback-test\\/custom-plugin.php","line":"19"}
###### wp_scraping_result_end:cd2ebe28c190573c672288b815495d23 ######
'
[07-Aug-2024 07:12:23 UTC]     「wordpress6.6-rollback-test」の更新で致命的なエラーが発生しました。以前インストールしていたバージョンに復元されました。
[07-Aug-2024 07:12:23 UTC]   Automatic plugin updates complete.
[07-Aug-2024 07:12:23 UTC]   Automatic theme updates starting...
[07-Aug-2024 07:12:23 UTC]   Automatic theme updates complete.
[07-Aug-2024 07:12:23 UTC] Automatic updates complete.

ざっと解説すると、

  • 1-4行目: 自動更新がスタートし、対象のプラグインが正しく更新されたことがわかる
  • 5行目 Scraping home page... :更新後のウェブサイトを確認中
  • 6行目 PHP Fatal error: This is a test error for rollback functionality in version 1.0.1. : 致命的エラーが発生
  • 22行目: 致命的エラーが発生し、以前のバージョンに復元されたことがわかる
  • 23-26行目: 自動更新が終了

というような感じで、正しく自動更新が開始し、エラーが発生するバージョン1.0.1に更新後致命的エラーが発生したため、以前のバージョン1.0.0にロールバックしたことが書かれていました。

メールでも自動更新が失敗したことが通知される

同じタイミングでメールも届いてました。

更新に失敗し、ロールバックされることが書いてある。

デバッグログを確認しなくても通知してくれるため安心です。送信先はWordPressの管理者メールアドレスに届きます。

ロールバック成功のため、エラーは発生していない

ブラウザでアクセスし、エラーが発生していないことを確認しました。

  • 管理画面: エラー無く、バージョン1.0.0を確認
  • フロントエンド: エラー無く、通常の画面なことを確認

よって、WordPress 6.6のロールバック機能は正しく動作することが確認できました!素晴らしい機能です。

手動更新は失敗するため、自動更新の方が安全

エラーが発生するバージョン1.0.1に手動で更新した場合はロールバック機能は動作するのでしょうか?確認しました。

プラグイン画面から手動でバージョン1.0.1に更新します。すると……。

更新失敗のアナウンスが表示される。
フロントエンド側にアクセスすると、エラーでアクセス不可。

このように、更新失敗した上、エラーとなっているために管理画面もフロントエンド側もアクセスができない状態でした。復旧するには手動でプラグインを修正してあげる必要があります。今回は以前のバージョン1.0.0に手動で戻して解消しました。

自動更新だとロールバックしてくれますが、手動更新はロールバックされず。ということで自動更新の方が安全そうです。

Warningエラーだとロールバックされない

致命的エラーであるFatalエラーだとロールバック機能が正しく動作していることを確認しました。一方、エラーレベルの下がる Warningエラーだとロールバックされるのでしょうか?これも確認しました。

結論としてロールバックされず、新しいバージョンとなります。デバッグログにはWarningエラーは記録されるものの、ウェブサイトにアクセスはできているためロールバックしないということなんでしょう。

WordPress 6.6の新機能、ロールバック機能を使ってより安全にWordPressを管理する

以上、ロールバック機能についての動作検証でした。実際には、他のプラグインとの連携やテーマとの影響等でエラーが発生したりするため、一概に今回の検証結果通りにはいかないケースもあると思いますが、プラグイン単独でエラーとなる場合は正しくロールバックして以前の状態に復元してくれることが確認できました。

「古いWordPressを使っているからロールバック機能を使えない……」
「WordPress6.6にしたいが、バージョンアップすると不具合が発生する」

という場合は、WordPressをバージョンアップできるよう、テーマを修正したり、利用プラグインを見直すことが必要です。

弊社ではWordPressの構築・保守を通して、今まで多くのWordPressを取り扱ってきました。将来的にも安心して使っていけるようにメンテナンスして利用することが可能ですので、お困りの際はお気軽にご相談ください。

メールコンサルティング
WordPress保守管理サービス

カテゴリWordPress 関連タグ:保守管理

池田祐太郎

WordPress の構築・保守を10年以上にわたって手掛けており、主に小〜中規模のコーポレートサイト・ECサイト・ブランドサイト等の企画・開発・保守・コンサルティングなどを行ってきました。2012年にハイファイブクリエイトを創業し、現在は WordPress の保守やコンサルティング、ディレクションや開発業務などを担当しています。 プロフィール詳細

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

この記事と関連する記事

WordPressにおける突然のデータベース接続エラーと自動復旧の原因と解消法
2024年6月5日
タグ: 保守管理
カテゴリー: WordPress
あなたのサイトは大丈夫?ファイル一覧公開の危険性
2024年5月11日
タグ: SEO, セキュリティ, 保守管理
カテゴリー: 仕事のこと
外部委託用のFTPアカウントは新規作成するのが望ましい。アカウントの名前例も
2024年4月25日
タグ: 保守管理
カテゴリー: 仕事のこと

最初のサイドバー

WordPress保守管理サポート

Search

最近の投稿

  • 2024-2025年末年始の営業のご案内
  • WordPressのプラグイン自動更新のロールバック機能が正しく動くのか確認してみた
  • 遅延読み込み開始させる画像を変更させるWordPressカスタマイズ
  • WordPressで特定の画像やアイキャッチ画像をlink rel=”preload”に設定する
  • WordPressのプラグインがどのくらい表示速度を重くさせるのか22個のプラグインで検証

カテゴリー

  • CSS初心者
  • HTML初心者
  • TIPS
  • WooCommerce
  • WordPress
  • エステサロン
  • お知らせ
  • キュレーション
  • サイトマップ
  • システム会社
  • デベロッパーツール入門
  • ブログ
  • ホームページ制作
  • ホームページ制作無料講座
  • メール
  • モバイル
  • 仕事のこと
  • 制作実績
  • 整体院
  • 美容院
  • 雑感

タグ

ai Android ChatGPT CMS css DALL-E elementor gmail google workspace Gutenberg HTML iPhone jQuery Mac Photoshop php SEO SNS ssh SSL Webサイト高速化 Windows WordPress WordPressカスタマイズ WordPressテーマ WordPress構築調査 WPRocket アクセス解析 クラウドソーシング サイト引っ越し サブスクリプション サーバー ショートカットキー スマホサイト スマートフォン セキュリティ ツール ブログ プラグイン マーケティング リニューアル レスポンシブWebデザイン 保守管理 最適化 集客するサイト構築

アーカイブ

CONTACT

お問い合わせはこちら

Footer

  • PRIVACY POLICY
  • 情報セキュリティ基本方針
  • 特定商取引法に基づく表示
  • 転載/引用

© 2025 high five create All rights reserved.