从Wordpress 4.7.3开始,只要以下序列成功,就会触发自动更新。所有代码都在文件中wp-includes/update.php
.
1。_maybe_update_core()
调用(通过admin_init
操作)
此功能通过
admin_init
操作,该操作在呈现页面之前在每个管理页面的开头执行。如果自上次版本检查后的当前时间小于12小时,则更新过程将停止(使用
Transient data), 除非当前wordpress的版本已更改(例如,如果自上次运行自动更新以来wordpress已手动更新)。
function _maybe_update_core() {
// include an unmodified $wp_version
include( ABSPATH . WPINC . \'/version.php\' );
$current = get_site_transient( \'update_core\' );
if ( isset( $current->last_checked, $current->version_checked ) &&
12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) &&
$current->version_checked == $wp_version ) {
return;
}
wp_version_check();
}
2。wp_version_check()
运行并检查新版本,并决定是否执行自动更新
此函数主要用于确保版本检查不会运行得太频繁(最多每分钟一次),并从api中检索版本信息。wordpress。组织版本检查API。但是,在函数的最后,如果触发更新的请求是通过CRON任务完成的,并且当前未进行自动更新,则将运行更新:
if ( defined( \'DOING_CRON\' ) && DOING_CRON && ! doing_action( \'wp_maybe_auto_update\' ) ) {
do_action( \'wp_maybe_auto_update\' );
}
3。wp_maybe_auto_update()
然后进行实际升级
function wp_maybe_auto_update() {
include_once( ABSPATH . \'/wp-admin/includes/admin.php\' );
include_once( ABSPATH . \'/wp-admin/includes/class-wp-upgrader.php\' );
$upgrader = new WP_Automatic_Updater;
$upgrader->run();
}
<小时>
Here is a tip 如何手动强制自动更新。