問題描述

在版本 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。