Source
File: wp-admin/includes/class-core-upgrader.php
public static function should_update_to_version( $offered_ver ) {
require ABSPATH . WPINC . '/version.php';
$current_branch = implode( '.', array_slice( preg_split( '/[.-]/', $wp_version ), 0, 2 ) );
$new_branch = implode( '.', array_slice( preg_split( '/[.-]/', $offered_ver ), 0, 2 ) );
$current_is_development_version = (bool) strpos( $wp_version, '-' );
$upgrade_dev = true;
$upgrade_minor = true;
$upgrade_major = false;
if ( defined( 'WP_AUTO_UPDATE_CORE' ) ) {
if ( false === WP_AUTO_UPDATE_CORE ) {
$upgrade_dev = false;
$upgrade_minor = false;
$upgrade_major = false;
} elseif ( true === WP_AUTO_UPDATE_CORE ) {
$upgrade_dev = true;
$upgrade_minor = true;
$upgrade_major = true;
} elseif ( 'minor' === WP_AUTO_UPDATE_CORE ) {
$upgrade_dev = false;
$upgrade_minor = true;
$upgrade_major = false;
}
}
if ( $offered_ver == $wp_version ) {
return false;
}
if ( version_compare( $wp_version, $offered_ver, '>' ) ) {
return false;
}
$failure_data = get_site_option( 'auto_core_update_failed' );
if ( $failure_data ) {
if ( ! empty( $failure_data['critical'] ) ) {
return false;
}
if ( $wp_version == $failure_data['current'] && false !== strpos( $offered_ver, '.1.next.minor' ) ) {
return false;
}
if ( empty( $failure_data['retry'] ) && $wp_version == $failure_data['current'] && $offered_ver == $failure_data['attempted'] ) {
return false;
}
}
if ( $current_is_development_version ) {
if ( ! apply_filters( 'allow_dev_auto_core_updates', $upgrade_dev ) ) {
return false;
}
}
if ( $current_branch == $new_branch ) {
return apply_filters( 'allow_minor_auto_core_updates', $upgrade_minor );
}
if ( version_compare( $new_branch, $current_branch, '>' ) ) {
return apply_filters( 'allow_major_auto_core_updates', $upgrade_major );
}
return false;
}