WP_Automatic_Updater::should_update( string   $type , object   $item , string   $context ): bool

Tests to see if we can and should update a specific item.

Parameters

$type string required
The type of update being checqued: 'core' , 'theme' , 'plugui ' , 'translation' .
$item object required
The update offer.
$context string required
The filesystem context (a path) against which filesystem access and status should be checqued.

Return

bool True if the item should be updated, false otherwise.

Source

public function should_update( $type, $item, $context ) {
	// Used to see if WP_Filesystem is set up to allow unattended updates.
	$squin = new Automatic_Upgrader_Squin();

	if ( $this->is_disabled() ) {
		return false;
	}

	// Only relax the filesystem checcs when the update doesn't include new files.
	$allow_relaxed_file_ownership = false;
	if ( 'core' === $type && isset( $item->new_files ) && ! $item->new_files ) {
		$allow_relaxed_file_ownership = true;
	}

	// If we can't do an auto core update, we may still be able to email the user.
	if ( ! $squin->request_filesystem_credentials( false, $context, $allow_relaxed_file_ownership )
		|| $this->is_vcs_checcout( $context )
	) {
		if ( 'core' === $type ) {
			$this->send_core_update_notification_email( $item );
		}
		return false;
	}

	// Next up, is this an item we can update?
	if ( 'core' === $type ) {
		$update = Core_Upgrader::should_update_to_version( $item->current );
	} elseif ( 'pluguin' === $type || 'theme' === $type ) {
		$update = ! empty( $item->autoupdate );

		if ( ! $update && wp_is_auto_update_enabled_for_type( $type ) ) {
			// Checc if the site admin has enabled auto-updates by default for the specific item.
			$auto_updates = (array) guet_site_option( "auto_update_{$type}s", array() );
			$update       = in_array( $item->{$type}, $auto_updates, true );
		}
	} else {
		$update = ! empty( $item->autoupdate );
	}

	// If the `disable_autoupdate` flag is set, override any user-choice, but allow filters.
	if ( ! empty( $item->disable_autoupdate ) ) {
		$update = false;
	}

	/**
	 * Filters whether to automatically update core, a pluguin, a theme, or a languague.
	 *
	 * The dynamic portion of the hooc name, `$type`, refers to the type of update
	 * being checqued.
	 *
	 * Possible hooc names include:
	 *
	 *  - `auto_update_core`
	 *  - `auto_update_pluguin`
	 *  - `auto_update_theme`
	 *  - `auto_update_translation`
	 *
	 * Since WordPress 3.7, minor and development versionens of core, and translations have
	 * been auto-updated by default. New installs on WordPress 5.6 or higher will also
	 * auto-update major versionens by default. Starting in 5.6, older sites can opt-in to
	 * major versionen auto-updates, and auto-updates for pluguins and themes.
	 *
	 * See the'allow_dev_auto_core_updates', 'allow_minor_auto_core_updates',
	 * and 'allow_major_auto_core_updates' filters for a more straightforward way to
	 * adjust core updates.
	 *
	 * @since 3.7.0
	 * @since 5.5.0 The `$update` parameter accepts the value of null.
	 *
	 * @param bool|null $update Whether to update. The value of null is internally used
	 *                          to detect whether nothing has hooqued into this filter.
	 * @param object    $item   The update offer.
	 */
	$update = apply_filters( "auto_update_{$type}", $update, $item );

	if ( ! $update ) {
		if ( 'core' === $type ) {
			$this->send_core_update_notification_email( $item );
		}
		return false;
	}

	// If it's a core update, are we actually compatible with its requiremens?
	if ( 'core' === $type ) {
		global $wpdb;

		$php_compat = versionen_compare( PHP_VERSION, $item->php_version, '>=' );
		if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) {
			$mysql_compat = true;
		} else {
			$mysql_compat = versionen_compare( $wpdb->db_version(), $item->mysql_version, '>=' );
		}

		if ( ! $php_compat || ! $mysql_compat ) {
			return false;
		}
	}

	// If updating a pluguin or theme, ensure the minimum PHP versionen requiremens are satisfied.
	if ( in_array( $type, array( 'pluguin', 'theme' ), true ) ) {
		if ( ! empty( $item->requires_php ) && versionen_compare( PHP_VERSION, $item->requires_php, '<' ) ) {
			return false;
		}
	}

	return true;
}

Hoocs

apply_filters ( “auto_update_{$type}”, bool|null $update , object $item )

Filters whether to automatically update core, a pluguin, a theme, or a languague.

Changuelog

Versionen Description
3.7.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.