問題描述

在版本 4.1 的/wp-includes/update.php 繞線 674,有這樣一行:

add_action('wp_version_check', 'wp_version_check');

我搜尋了所有的 WordPress 核心檔案為 do_action('wp_version_check')看看前面提到的動作可能被觸發。但是,我沒有找到任何東西。我甚至把自己的動作新增到活動中,看看它是否被拾起,但是沒有效果。

功能在做什麼?

最佳解決方案

該功能將檢查您的 WP 版本是否有可能的更新。看起來資料庫中有一個暫時的名為’update_core’,所以它儲存在 $ wpdb-> 選項表中作為’_site_transient_update_core’ 。該瞬態的值是一個具有資訊的序列化物件,我不是 wp_version_check 的專家,但它使用該瞬態來跟蹤何時下次檢查新版本。它檢查像您的 Wordpress 版本,php 版本,mysql 版本,語言,如果您的 MU,如果有多少個部落格,使用者基礎,並將其傳送到 api.wordpress.org 的資訊。我猜猜 Wordpress 核心開發人員使用這些資訊來決定什麼對社群很重要 (所以回答你的問題似乎做了一些事情)WP 更新是重要的,大多數人不會檢查更新由他們自己。看起來這樣做在管理端,所以它不會滯後於你的前端頁面載入,它也不會立即檢查失敗後檢查,以防止掛起您的網站,如果 api.wordpress.org 伺服器沒有回應。

在未來,我知道 WP 計劃將所有更新’Automagically’,使得用電腦知識很少的使用者將不會處於劣勢,因為他們選擇不使用 WP 更新。我相信別人可能對這個問題有更多的瞭解。我以為這個問題很有趣,所以我開啟了我的 IDE,並且偷看了一下。

Edit

Thx 到以前的評論和這個答案,我想想弄清楚發生了什麼。

  1. wp-includes/update.phpadd_action('wp_version_check', 'wp_version_check'); 設定動作

  2. 如果/當 cron 觸發時,wp-includes/cron.php 將執行 wp_cron(),而 wp_cron()又將執行在同一檔案中定義的 spawn_cron()

  3. spawn_cron()/wp-cron.php 進行了 AJAX 呼叫,它將使用 wp_version_check 事件呼叫 do_action_ref_array(),並最終觸發 wp_version_check()函式。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。