WP_Automatic_Updater::should_update( string $type, object $item, string $context )
Tests to see if we can and should update a specific item.
Parameters
- $type
-
(Required) The type of update being checked: 'core', 'theme', 'plugin', 'translation'.
- $item
-
(Required) The update offer.
- $context
-
(Required) The filesystem context (a path) against which filesystem access and status should be checked.
Source
File: wp-admin/includes/class-wp-automatic-updater.php
public function should_update( $type, $item, $context ) {
// Used to see if WP_Filesystem is set up to allow unattended updates.
$skin = new Automatic_Upgrader_Skin;
if ( $this->is_disabled() )
return false;
// Only relax the filesystem checks 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 ( ! $skin->request_filesystem_credentials( false, $context, $allow_relaxed_file_ownership ) || $this->is_vcs_checkout( $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 );
else
$update = ! empty( $item->autoupdate );
/**
* Filters whether to automatically update core, a plugin, a theme, or a language.
*
* The dynamic portion of the hook name, `$type`, refers to the type of update
* being checked. Can be 'core', 'theme', 'plugin', or 'translation'.
*
* Generally speaking, plugins, themes, and major core versions are not updated
* by default, while translations and minor, patch, and nightly versions for core are
* updated by default.
*
* See the
* {@see 'allow_dev_auto_core_updates'},
* {@see 'allow_nightly_auto_core_updates'},
* {@see 'allow_minor_auto_core_updates'}, and
* {@see 'allow_major_auto_core_updates'}
* filters for a more straightforward way to adjust core updates.
*
* @since 1.0.0 Added filter for ClassicPress nightly updates.
* @since WP-3.7.0
*
* @param bool $update Whether to update.
* @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 requirements?
if ( 'core' == $type ) {
global $wpdb;
$php_compat = version_compare( phpversion(), $item->php_version, '>=' );
if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) )
$mysql_compat = true;
else
$mysql_compat = version_compare( $wpdb->db_version(), $item->mysql_version, '>=' );
if ( ! $php_compat || ! $mysql_compat )
return false;
}
return true;
}
Changelog
Version | Description |
---|---|
WP-3.7.0 | Introduced. |