web-dev-qa-db-ja.com

WordPress自動更新プラグインの頻度を変更する

WordPressがコアとプラグインを更新する方法についての私の理解から、12時間ごとにそれが出て行き、更新を探すということです。その時間はいつ設定されますか。初期インストールから12時間?私はこれを頼みます。なぜならプラグインの自動更新フィルタを使うことで - add_filter( 'auto_update_plugin' ); あなたは理論的には特定の時間の間にのみプラグインを更新させることができます。

このように、WordPressがどのくらいの頻度でアップデートを探すのか、どのようにして自動アップデートするのかを指定するのか、という質問に私の肩書きを残しますか。

興味がある人のために、これが私がめちゃくちゃにしているフィルタである、それが月曜日 - 金曜日の午前8時 - 午後5時であるかどうか確認するためにチェックする:

function maybe_update_plugins(){
    date_default_timezone_set('Your Timezone Here');
    $localAssoc = localtime(time(), true);
    $update = false;

    /***
    /* tm_wday[0] = Sunday
    /* tm_wday[6] = Saturday
    ***/
    if(
      $localAssoc['tm_wday'] > 0 && $localAssoc['tm_wday'] < 6 &&
      $localAssoc['tm_hour'] > 7 && $localAssoc['tm_hour'] < 17
    ){
        $update = true;
    }

    return $update;
}
add_filter( 'auto_update_plugin', 'maybe_update_plugins' );

編集 きちんとした補足として、プラグインの更新、複数のプラグインの更新、フィルターの複数の実行のたびにこのフィルターが実行されるように見えます。

15
Howdy_McGee

あなたは正しいです、Wordpressは12時間ごとにコアとプラグインの更新をチェックします、しかしそれはWordへのより良い方法です:それは最後の更新が12時間以上前であれば更新をチェックします。

12時間の設定はwp-includes/update.phpにハードコーディングされています

最終更新日はwp_optionsテーブルに格納され、オプションは以下のとおりです。

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

このチェックは12時間後には発生しませんが、次回条件が満たされたとき(少なくとも12時間が経過したとき)には更新を見逃すことはありません。

9
LevanK

関連する関数 wp_update_plugins()wp_maybe_auto_update() は、同じ名前のwp-cronイベントにフックされ、1日2回のスケジュールで実行されます。

論理的には、最初のスケジュールから最初のスケジュールが開始されます。 wp-cronの実装(実際のcronではなく、サーバーのクロックではなくサイトへのアクセスによって引き起こされる)のため、実際のwp-cronが期日を過ぎると起動するたびに「ドリフト」します。

プラグインの更新チェックは、プラグインリストなどの特定の管理領域でも頻繁に発生します(古い情報を見ている可能性が低くなるため)。

私の頭の上に、私はそれを特定の時間の廊下に入れるための優雅な方法を見ません。スケジュールの変更はとても簡単です。ドリフトの説明はそれほど多くありません。

何らかの理由でこれが重要な要件である場合は、実際のアップデート用に実サーバーのcronおよび外部ツール(wp-cliのアップデート機能やComposerを介したプラグインの管理など)を使用して処理するほうがよいでしょう。

5
Rarst