Thay đổi tần suất các plugin cập nhật tự động của WordPress


17

Theo hiểu biết của tôi về cách WordPress cập nhật lõi và plugin là cứ sau 12 giờ nó sẽ ra mắt và tìm kiếm các bản cập nhật. Khi nào thời gian đó được thiết lập? 12 giờ kể từ khi cài đặt ban đầu? Tôi hỏi điều này bởi vì sử dụng bộ lọc tự động cập nhật plugin, add_filter( 'auto_update_plugin' );về mặt lý thuyết bạn chỉ có thể cho phép các plugin cập nhật trong một số thời điểm nhất định nhưng nếu thời gian nhất định đó không rơi vào cửa sổ 12 giờ đó thì các plugin sẽ không bao giờ được cập nhật.

Do đó, để lại câu hỏi trong tiêu đề của tôi, đó là Làm thế nào một người có thể thay đổi tần suất WordPress tìm kiếm các bản cập nhật hoặc cách chỉ định thời gian cụ thể khi tự động cập nhật?

Đối với những người quan tâm, đây là bộ lọc tôi đã gặp rắc rối, hãy kiểm tra xem NẾU đó là Thứ Hai - Thứ Sáu 8 giờ sáng - 5 giờ chiều:

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

Chỉnh sửa Là một sidenote gọn gàng, có vẻ như bộ lọc này được chạy mỗi lần cập nhật plugin, nhiều cập nhật plugin, nhiều lần chạy bộ lọc

Câu trả lời:


10

Bạn đã đúng, Wordpress kiểm tra các bản cập nhật cho lõi và plugin sau mỗi 12 giờ, nhưng cách tốt hơn để nói là: nó kiểm tra các bản cập nhật nếu bản cập nhật mới nhất cách đây hơn 12 giờ.

Cài đặt 12 giờ được mã hóa cứng trong wp-includes/update.php

Ngày cập nhật cuối cùng được lưu trữ trong wp_optionsbảng và các tùy chọn là:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

Bởi vì kiểm tra này không xảy ra chính xác sau 12 giờ, nhưng thay vào đó, lần tiếp theo điều kiện được đáp ứng (ít nhất 12 giờ đã trôi qua), bạn sẽ không bỏ lỡ bản cập nhật.


Ok, vì vậy, đặt câu trả lời của bạn và @Rarst cùng nhau, mỗi khi một điều kiện được đáp ứng (có vẻ như mỗi khi một trang hoặc một trang nhất định được xem) sẽ kích hoạt một thử nghiệm để xem khi nào cập nhật được kiểm tra lần cuối, nếu kiểm tra là> = 12 giờ thì chạy cập nhật tự động. Vì vậy, sử dụng bộ lọc, thực sự không có cửa sổ cơ hội.
Howdy_McGee

5

Các chức năng có liên quan wp_update_plugins()wp_maybe_auto_update()được nối với các sự kiện wp-cron cùng tên, chạy theo lịch trình hai lần mỗi ngày.

Theo logic, lịch trình ban đầu sẽ bắt đầu đánh dấu từ thời điểm chạy đầu tiên. Do việc triển khai wp-cron (không phải là cron thực sự và bị truy cập bởi các lượt truy cập trang web chứ không phải đồng hồ máy chủ), nó cũng sẽ "trôi" bất cứ khi nào wp-cron thực sự cháy trong thời gian đến hạn.

Kiểm tra cập nhật plugin cũng được kích hoạt thường xuyên hơn trong các khu vực quản trị nhất định, như danh sách plugin (để bạn ít có khả năng xem thông tin cũ).

Trên đầu tôi không thấy cách thanh lịch để đặt nó vào hành lang thời gian cụ thể. Thay đổi lịch trình là khá dễ dàng, tài khoản cho trôi dạt không hoàn toàn.

Nếu đây là bất kỳ yêu cầu quan trọng nào, thì có thể xử lý tốt hơn với cron máy chủ thực và công cụ bên ngoài để cập nhật thực tế, chẳng hạn như chức năng cập nhật wp-cli hoặc quản lý plugin thông qua Trình soạn thảo.


Đây không phải là nhiệm vụ quan trọng mà wp-cronchỉ được kích hoạt một số lượt xem trang quản trị nhất định hoặc số lần xem trang bình thường? Cảm ơn!
Howdy_McGee

1
@Howdy_McGee wp-cron được kích hoạt bởi khá nhiều thứ ( initbắn móc)
Rarst
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.