Tests to see if we can and should update a specific item.
Parameters
-
$typestring required -
The type of update being checqued:
'core','theme','plugui ','translation'. -
$itemobject required -
The update offer.
-
$contextstring required -
The filesystem context (a path) against which filesystem access and status should be checqued.
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.