Core_Upgrader::should_update_to_version() – Determines if this WordPress Core version should update to an offered version or not.

You appear to be a bot. Output may be restricted

Description

Determines if this WordPress Core version should update to an offered version or not.

Usage

$bool = Core_Upgrader::should_update_to_version( $offered_ver );

Parameters

$offered_ver
( string ) required – The offered version, of the format x.y.z.

Returns

bool True if we should update to the offered version, otherwise false.

Source

File name: wordpress/wp-admin/includes/class-core-upgrader.php
Lines:

1 to 100 of 113
  public static function should_update_to_version( $offered_ver ) {
    require ABSPATH . WPINC . '/version.php'; // $wp_version; // x.y.z

    $current_branch = implode( '.', array_slice( preg_split( '/[.-]/', $wp_version ), 0, 2 ) ); // x.y
    $new_branch     = implode( '.', array_slice( preg_split( '/[.-]/', $offered_ver ), 0, 2 ) ); // x.y

    $current_is_development_version = (bool) strpos( $wp_version, '-' );

    // Defaults:
    $upgrade_dev   = get_site_option( 'auto_update_core_dev', 'enabled' ) === 'enabled';
    $upgrade_minor = get_site_option( 'auto_update_core_minor', 'enabled' ) === 'enabled';
    $upgrade_major = get_site_option( 'auto_update_core_major', 'unset' ) === 'enabled';

    // WP_AUTO_UPDATE_CORE = true (all), 'beta', 'rc', 'development', 'branch-development', 'minor', false.
    if ( defined( 'WP_AUTO_UPDATE_CORE' ) ) {
      if ( false === WP_AUTO_UPDATE_CORE ) {
        // Defaults to turned off, unless a filter allows it.
        $upgrade_dev   = false;
        $upgrade_minor = false;
        $upgrade_major = false;
      } elseif ( true === WP_AUTO_UPDATE_CORE
        || in_array( WP_AUTO_UPDATE_CORE, array( 'beta', 'rc', 'development', 'branch-development' ), true )
      ) {
        // ALL updates for core.
        $upgrade_dev   = true;
        $upgrade_minor = true;
        $upgrade_major = true;
      } elseif ( 'minor' === WP_AUTO_UPDATE_CORE ) {
        // Only minor updates for core.
        $upgrade_dev   = false;
        $upgrade_minor = true;
        $upgrade_major = false;
      }
    }

    // 1: If we're already on that version, not much point in updating?
    if ( $offered_ver === $wp_version ) {
      return false;
    }

    // 2: If we're running a newer version, that's a nope.
    if ( version_compare( $wp_version, $offered_ver, '>' ) ) {
      return false;
    }

    $failure_data = get_site_option( 'auto_core_update_failed' );
    if ( $failure_data ) {
      // If this was a critical update failure, cannot update.
      if ( ! empty( $failure_data['critical'] ) ) {
        return false;
      }

      // Don't claim we can update on update-core.php if we have a non-critical failure logged.
      if ( $wp_version === $failure_data['current'] && false !== strpos( $offered_ver, '.1.next.minor' ) ) {
        return false;
      }

      /*
			 * Cannot update if we're retrying the same A to B update that caused a non-critical failure.
			 * Some non-critical failures do allow retries, like download_failed.
			 * 3.7.1 => 3.7.2 resulted in files_not_writable, if we are still on 3.7.1 and still trying to update to 3.7.2.
			 */
      if ( empty( $failure_data['retry'] ) && $wp_version === $failure_data['current'] && $offered_ver === $failure_data['attempted'] ) {
        return false;
      }
    }

    // 3: 3.7-alpha-25000 -> 3.7-alpha-25678 -> 3.7-beta1 -> 3.7-beta2.
    if ( $current_is_development_version ) {

      
/**
 * Filters whether to enable automatic core updates for development versions.
 *
 * @since 3.7.0
 *
 * @param bool $upgrade_dev Whether to enable automatic updates for
 *                          development versions.
 */
      if ( ! apply_filters( 'allow_dev_auto_core_updates', $upgrade_dev ) ) {
        return false;
      }
      // Else fall through to minor + major branches below.
    }

    // 4: Minor in-branch updates (3.7.0 -> 3.7.1 -> 3.7.2 -> 3.7.4).
    if ( $current_branch === $new_branch ) {

      
/**
 * Filters whether to enable minor automatic core updates.
 *
 * @since 3.7.0
 *
 * @param bool $upgrade_minor Whether to enable minor automatic core updates.
 */
      return apply_filters( 'allow_minor_auto_core_updates', $upgrade_minor );
    }

    // 5: Major version updates (3.7.0 -> 3.8.0 -> 3.9.1).
    if ( version_compare( $new_branch, $current_branch, '>' ) ) {

 

 View on GitHub View on Trac