wppaste
WordPress

Core_Upgrader::should_update_to_version( string $offered_ver ): bool

Since
3.7.0
Source
wp-admin/includes/class-core-upgrader.php:279
Determines if this WordPress Core version should update to an offered version or not.

Parameters

$offered_verstring
The offered version, of the format x.y.z.

Return

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

Hooks fired · 3

3 hooks fire while Core_Upgrader::should_update_to_version() runs, in this order:

  1. apply_filters( allow_dev_auto_core_updates )filterline 357 (+78 into the body)

    Filters whether to enable automatic core updates for development versions.

  2. apply_filters( allow_minor_auto_core_updates )filterline 373 (+94 into the body)

    Filters whether to enable minor automatic core updates.

  3. apply_filters( allow_major_auto_core_updates )filterline 386 (+107 into the body)

    Filters whether to enable major automatic core updates.

Uses · 3

  • get_site_option()Retrieve an option value for the current network based on name of option.
  • str_contains()Polyfill for `str_contains()` function added in PHP 8.0.
  • apply_filters()Calls the callback functions that have been added to a filter hook.

Used by · 1

Source

	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'] && str_contains( $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;

History

Introduced in 3.7.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-admin/includes/class-core-upgrader.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.