プラグインアップデートの仕組み
自己紹介(追加)
プラグインのアップデートについて調べることになったきっかけ
アップデートの概要
※参照: https://ja.wordpress.org/support/article/configuring-automatic-background-updates/
WordPressのアップデート処理
WordPress のページアクセスは以下の流れで処理されます。
上記の流れの中で、wp-cron.php が wp_cron を実行します。
プログラムでの処理の流れ
1. 情報取得
1.1. API参照
wp_version_check() 関数は、WordPress.org の API を参照し、
https://codex.wordpress.org/WordPress.org_API
プラグインの最新バージョンや更新状況などの情報を取得します。
1.2. データ保持
取得したデータは、transient と呼ばれる WordPress 内部キャッシュに保存されます。
これは、wp_options テーブルの _site_transient_update_plugins に保存されます。
1.3. 更新頻度
1.4. 情報更新の遅延
12時間以内にプラグインが更新された場合、次の情報取得まで反映されない可能性があります。
プログラムでの処理の流れ2
2. 自動更新処理
2.1. 自動更新設定
プラグインの自動更新が有効の場合、12時間ごとの wp_cron で実際の更新処理が動作します。
2.2. 更新処理
更新対象となるプラグインに対して、以下の処理が実行されます。
3.強制アップデートについて
正しい?プラグインアップデートの制御
定数を指定して無効化
AUTOMATIC_UPDATER_DISABLED 定数
wp-config.php ファイルに AUTOMATIC_UPDATER_DISABLED 定数を true に設定することで、全ての自動更新を無効化できます。
注意事項
define( 'AUTOMATIC_UPDATER_DISABLED', true );
フックを使用した無効化
auto_update フック
auto_update フックは、全ての自動更新を制御するフックです。
このフックに false を返すことで、全ての自動更新を無効化できます。
auto_update_{$type} フック
auto_update_{$type} フックは、特定の種類の自動更新を制御するフックです。
{$type} には、core、plugin、theme、translation のいずれかを指定できます。
注意事項
add_filter( 'auto_update', function( $update ) {
return false;
} );
add_filter( 'auto_update_plugin', function( $update ) {
// 特定のプラグインのみ更新を停止する
if ( $plugin['slug'] === 'my-plugin' ) {
return false;
}
return $update;
} );
プラグインのアップデート制御:UpdateURI の活用
WordPress 6.5 の新機能:プラグインの依存関係制御
以上