แก้ไขบ่อยครั้งที่ WordPress อัปเดตอัตโนมัติปลั๊กอิน


17

จากความเข้าใจของฉันเกี่ยวกับวิธีการที่ WordPress อัปเดตคอร์และปลั๊กอินคือทุก ๆ 12 ชั่วโมงมันออกไปและค้นหาการปรับปรุง เวลานั้นถูกตั้งค่าเมื่อใด 12 ชั่วโมงจากการติดตั้งครั้งแรก? ฉันถามสิ่งนี้เพราะการใช้ตัวกรองอัปเดตปลั๊กอินอัตโนมัติadd_filter( 'auto_update_plugin' );คุณสามารถอนุญาตให้ปลั๊กอินอัปเดตเฉพาะในบางช่วงเวลาได้ แต่ในกรณีที่เวลาไม่ตรงกับหน้าต่าง 12 ชั่วโมงนั้นปลั๊กอินจะไม่ถูกอัปเดต

ดังนั้นการทิ้งคำถามไว้ในชื่อของฉันซึ่งเป็นวิธีการเกี่ยวกับการเปลี่ยนแปลงบ่อยครั้งที่ WordPress มองหาการปรับปรุงหรือวิธีการระบุเวลาเฉพาะเมื่อมีการปรับปรุงอัตโนมัติ?

สำหรับผู้ที่สนใจนี่คือตัวกรองที่ฉันได้รับยุ่งตรวจสอบเพื่อดูว่ามันเป็นวันจันทร์ถึงวันศุกร์ 08:00 - 17:00 น.:

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

แก้ไขเป็น sidenote ที่เรียบร้อยดูเหมือนว่าตัวกรองนี้จะทำงานทุกครั้งที่มีการอัปเดตปลั๊กอินการอัปเดตปลั๊กอินหลายรายการการทำงานหลายครั้งของตัวกรอง

คำตอบ:


10

คุณถูกต้อง Wordpress ตรวจสอบการอัปเดตสำหรับคอร์และปลั๊กอินทุก 12 ชั่วโมง แต่เป็นวิธีที่ดีกว่าในการใช้คำว่า: ตรวจสอบการอัปเดตหากการอัปเดตครั้งล่าสุดนานกว่า 12 ชั่วโมงที่ผ่านมา

การตั้งค่า 12 ชั่วโมงนั้นมีการเข้ารหัสยาก wp-includes/update.php

วันที่อัพเดทล่าสุดจะถูกเก็บไว้ในwp_optionsตารางและมีตัวเลือกดังนี้:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

เนื่องจากการตรวจสอบนี้ไม่ได้เกิดขึ้นอย่างแม่นยำหลังจากผ่านไป 12 ชั่วโมง แต่ในครั้งต่อไปจะเป็นไปตามเงื่อนไข (ผ่านอย่างน้อย 12 ชั่วโมง) ดังนั้นคุณจะไม่พลาดการอัปเดต


ตกลงดังนั้นใส่คำตอบของคุณและ @Rarst เข้าด้วยกันทุกครั้งที่เป็นไปตามเงื่อนไข (เสียงเหมือนทุกครั้งที่มีการดูหน้าเว็บหรือหน้าบางหน้า) จะเรียกการทดสอบเพื่อดูว่ามีการตรวจสอบการอัปเดตครั้งสุดท้ายหรือไม่ เรียกใช้การปรับปรุงอัตโนมัติ ดังนั้นการใช้ตัวกรองจึงไม่มีหน้าต่างแห่งโอกาส
Howdy_McGee

5

ฟังก์ชั่นที่เกี่ยวข้องwp_update_plugins()และwp_maybe_auto_update()เชื่อมโยงกับเหตุการณ์ wp-cron ที่มีชื่อเดียวกันโดยเรียกใช้ตามกำหนดเวลาสองครั้งต่อวัน

เหตุผลกำหนดการเริ่มต้นจะเริ่มติ๊กจากเวลาของการเรียกใช้ครั้งแรก เนื่องจากการติดตั้ง wp-cron (ไม่ใช่ cron จริงและถูกเรียกใช้โดยการเยี่ยมชมไซต์มากกว่านาฬิกาเซิร์ฟเวอร์) มันจะ "เลื่อน" เมื่อใดก็ตามที่ wp-cron จริงยิงในเวลาที่ครบกำหนด

การตรวจสอบการอัปเดตปลั๊กอินจะถูกเรียกใช้บ่อยขึ้นในบางพื้นที่ของผู้ดูแลระบบเช่นรายการปลั๊กอิน (เพื่อให้คุณมีโอกาสน้อยที่จะดูข้อมูลเก่า)

ด้านบนของหัวของฉันฉันไม่ได้เห็นวิธีที่สง่างามที่จะนำมันเข้าไปในทางเดินเวลาที่เฉพาะเจาะจง การเปลี่ยนกำหนดการค่อนข้างง่ายบัญชีสำหรับการดริฟท์ค่อนข้างไม่เพียงพอ

หากเป็นไปตามข้อกำหนดที่สำคัญที่สุดควรมีการจัดการกับเซิร์ฟเวอร์ cron จริงและเครื่องมือภายนอกสำหรับการอัพเดทจริงเช่นฟังก์ชั่นการอัพเดท wp-cli หรือการจัดการปลั๊กอินผ่านนักแต่งเพลง


มันไม่ได้เป็นภารกิจที่สำคัญ แต่จะwp-cronเรียกเฉพาะมุมมองหน้าผู้ดูแลระบบบางอย่างหรือยังมีการเปิดดูหน้าเว็บปกติ? ขอบคุณ!
Howdy_McGee

1
@Howdy_McGee wp-cron ถูกเรียกโดยอะไรมาก ( initยิงเบ็ด)
Rarst
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.