问题描述

在版本 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。