Ubah seberapa sering Plugin Pembaruan Otomatis WordPress

17

Dari pemahaman saya tentang bagaimana WordPress memperbarui inti dan plugin adalah bahwa setiap 12 jam itu keluar dan mencari pembaruan. Kapan waktu itu ditetapkan? 12 jam dari instalasi awal? Saya bertanya ini karena menggunakan filter pembaruan otomatis plugin add_filter( 'auto_update_plugin' );Anda secara teoritis hanya dapat mengizinkan plugin untuk memperbarui antara waktu-waktu tertentu tetapi jika waktu tertentu tidak jatuh ke dalam jendela 12 jam maka plugin tidak akan pernah diperbarui.

Jadi meninggalkan pertanyaan dalam judul saya yaitu Bagaimana cara mengubah seberapa sering WordPress mencari pembaruan atau bagaimana menentukan waktu tertentu kapan untuk memperbarui otomatis?

Bagi yang berminat, inilah filter yang sudah saya gunakan, periksa untuk melihat JIKA itu hari Senin - Jumat jam 8 pagi - 5 sore:

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' );

Sunting Sebagai sidenote yang rapi, sepertinya filter ini dijalankan setiap kali ada pembaruan plugin, beberapa pembaruan plugin, beberapa kali filter dijalankan.

Howdy_McGee
sumber

Jawaban:

10

Anda benar, Wordpress memeriksa pembaruan untuk inti dan plugin setiap 12 jam, tetapi cara yang lebih baik untuk kata itu adalah: memeriksa pembaruan jika pembaruan terakhir lebih dari 12 jam yang lalu.

Pengaturan 12 jam merupakan kode sulit wp-includes/update.php

Tanggal terakhir diperbarui disimpan dalam wp_optionstabel dan opsinya adalah:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

Karena pemeriksaan ini tidak terjadi tepat setelah 12 jam, tetapi waktu berikutnya kondisi terpenuhi (setidaknya 12 jam telah berlalu) maka Anda tidak akan ketinggalan pembaruan.

LevanK
sumber
Oke, jadi kumpulkan jawaban Anda dan @Rarst, setiap kali suatu kondisi terpenuhi (terdengar seperti setiap kali halaman atau halaman tertentu dilihat) memicu tes untuk melihat kapan pembaruan diperiksa terakhir, jika centangnya> = 12 jam lalu jalankan pembaruan otomatis. Jadi menggunakan filter, sebenarnya tidak ada jendela peluang.
Howdy_McGee
5

Fungsi yang relevan wp_update_plugins()dan wp_maybe_auto_update()terhubung ke acara wp-cron dengan nama yang sama, berjalan pada jadwal dua kali sehari.

Secara logis, jadwal awal akan mulai dicentang dari saat pertama kali dijalankan. Karena implementasi wp-cron (bukan cron asli dan dipicu oleh kunjungan situs daripada jam server), itu juga akan "melayang" setiap kali wp-cron yang sebenarnya melewati waktu yang seharusnya.

Pemeriksaan pembaruan plugin juga lebih sering dipicu di area admin tertentu, seperti daftar plugin (sehingga Anda cenderung tidak melihat informasi basi).

Di atas kepala saya, saya tidak melihat cara yang elegan untuk memasukkannya ke dalam koridor waktu tertentu. Mengubah jadwal cukup mudah, akun untuk penyimpangan tidak cukup.

Jika hal ini merupakan persyaratan penting misison-kritis maka mungkin lebih baik ditangani dengan cron server nyata dan alat eksternal untuk pembaruan aktual, seperti fungsi pembaruan wp-cli atau mengelola plugin melalui Komposer.

Jarang
sumber
Itu bukan misi kritis tetapi wp-cronhanya memicu tampilan halaman admin tertentu atau juga tampilan halaman normal? Terima kasih!
Howdy_McGee
1
@Howdy_McGee wp-cron dipicu oleh hampir semua hal ( inithook firing)
Rarst