Configuración de actualizaciones automáticas en segundo plano

Tipos de actualización

Las actualizaciones automáticas en segundo plano se introdujeron en WordPress 3.7 en un esfuerzo por promover una mejor seguridad y optimizar la experiencia de actualización en general. De forma predeterminada, en la mayoría de los sitios solo se habilitan versiones menores, por ejemplo, para fines de mantenimiento y seguridad, y las actualizaciones de archivos de traducción. En casos especiales, los plugins y temas pueden actualizarse.

En WordPress, hay cuatro tipos de actualizaciones automáticas en segundo plano:

  1. Actualizaciones del core
  2. Actualizaciones de plugins
  3. Actualizaciones de temas
  4. Actualizaciones de archivos de traducción

Ir arriba ↑

Actualizaciones del core

Las actualizaciones del core se subdividen en tres tipos:

  1. Actualizaciones de desarrollo del core, conocidas como “bleeding edge”
  2. Actualizaciones del core menores, como actualizaciones de seguridad y mantenimiento
  3. Principales actualizaciones de versiones del core

De forma predeterminada, todos los sitios tienen habilitadas actualizaciones automáticas para versiones del core menores y archivos de traducción. Los sitios que ya ejecutan una versión de desarrollo también tienen actualizaciones automáticas para otras versiones de desarrollo habilitadas de forma predeterminada.

Ir arriba ↑

Actualizar configuración

Las actualizaciones automáticas se pueden configurar usando uno de dos métodos: definiendo constantes en wp-config.php o agregando filtros usando un plugin.

Ir arriba ↑

Configuración vía wp-config.php

Con wp-config.php, las actualizaciones automáticas se pueden deshabilitar por completo y las actualizaciones del core se pueden deshabilitar o configurar según el tipo de actualización.

Ir arriba ↑

Constante para deshabilitar todas las actualizaciones

Los desarrolladores del core tomaron la decisión consciente de habilitar actualizaciones automáticas para versiones menores y archivos de traducción listos para usar. En el futuro, esta será una de las mejores formas de garantizar que tu sitio se mantenga actualizado y seguro y, como tal, se desaconseja encarecidamente deshabilitar estas actualizaciones.

Para desactivar por completo todos los tipos de actualizaciones automáticas, del core o de otro tipo, agrega lo siguiente a tu archivo wp-config.php:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Ir arriba ↑

Constante para configurar actualizaciones principales

Para habilitar actualizaciones automáticas para lanzamientos importantes o propósitos de desarrollo, el lugar para comenzar es con la constante WP_AUTO_UPDATE_CORE. Definir esta constante en una de las tres formas siguientes te permite habilitar o deshabilitar de forma general varios tipos de actualizaciones principales a la vez.

define( 'WP_AUTO_UPDATE_CORE', true );

WP_AUTO_UPDATE_CORE se puede definir con uno de tres valores, cada uno de los cuales produce un comportamiento diferente:

  • Valor de true: las actualizaciones de desarrollo, menores y mayores están habilitadas
  • Valor de false: las actualizaciones de desarrollo, menores y mayores están deshabilitadas
  • Valor de 'minor': las actualizaciones menores están habilitadas, el desarrollo y las actualizaciones principales están deshabilitadas

Ten en cuenta que solo los sitios que ya ejecutan una versión de desarrollo recibirán actualizaciones de desarrollo.

Para los sitios de desarrollo, el valor predeterminado de WP_AUTO_UPDATE_CORE es true. Para otros sitios, el valor predeterminado de WP_AUTO_UPDATE_CORE es minor.

Ir arriba ↑

Configuración mediante filtros

El uso de filtros permite un control preciso de las actualizaciones automáticas.

El mejor lugar para colocar estos filtros es en un plugin obligatorio.

No agregues llamadas add_filter() directamente en wp-config.php. WordPress no está completamente cargado y puede causar conflictos con otras aplicaciones como WP-CLI.

Ir arriba ↑

Deshabilitar todas las actualizaciones a través de un filtro

También puedes deshabilitar todas las actualizaciones automáticas utilizando el siguiente filtro:

add_filter( 'automatic_updater_disabled', '__return_true' );

Ir arriba ↑

Actualizaciones del core a través de un filtro

Para habilitar solo todas las actualizaciones del core, usa el siguiente filtro:

add_filter( 'auto_update_core', '__return_true' );

Pero digamos que en lugar de habilitar o deshabilitar los tres tipos de actualizaciones principales, deseas habilitarlas o deshabilitarlas de forma selectiva. Ahí es donde entran los filtros allow_dev_auto_core_updates, allow_minor_auto_core_updates y allow_major_auto_core_updates.

Hay dos funciones abreviadas integradas en WordPress que te permitirán habilitar o deshabilitar tipos específicos de actualizaciones del core con una sola línea de código. Son __return_true y __return_false. A continuación, se muestran algunos filtros de ejemplo:

Para habilitarlos específicamente individualmente (para deshabilitarlos, usa false en lugar de true):

add_filter( 'allow_dev_auto_core_updates', '__return_true' );           // Habilitar actualizaciones de desarrollo
add_filter( 'allow_minor_auto_core_updates', '__return_true' );         // Habilitar actualizaciones menores
add_filter( 'allow_major_auto_core_updates', '__return_true' );         // Habilitar actualizaciones mayores

Para desarrolladores: Para habilitar las actualizaciones automáticas incluso si se encontró una carpeta VCS (.git, .hg, .svn, etc.) en el directorio de WordPress o en cualquiera de sus directorios principales:

add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );

Ir arriba ↑

Actualizaciones de plugins y temas a través de un filtro

De forma predeterminada, las actualizaciones automáticas en segundo plano solo ocurren para plugins y temas en casos especiales, según lo determinado por la respuesta de la API de WordPress.org, que está controlada por el equipo de seguridad de WordPress para parchear vulnerabilidades críticas. Para habilitar o deshabilitar las actualizaciones en todos los casos, puedes aprovechar el filtro auto_update_$type, donde $type sería reemplazado por “plugin” o “theme”.

Actualizaciones automáticas para todos los plugins:

add_filter( 'auto_update_plugin', '__return_true' );

Actualizaciones automáticas para todos los temas:

add_filter( 'auto_update_theme', '__return_true' );

Puedes usar __return_false en lugar de __return_true para deshabilitar específicamente todas las actualizaciones de plugins y temas, incluso los impulsos de seguridad forzados del equipo de seguridad de WordPress.

Los filtros auto_update_$type también permiten un control más detallado, ya que el elemento específico a actualizar también se pasa al filtro. Si deseas habilitar las actualizaciones automáticas solo para plugins específicos, puedes usar un código como este:

function auto_update_specific_plugins ( $update, $item ) {
	// Array de slugs de plugins para actualizar siempre automáticamente
	$plugins = array (
		'akismet',
		'buddypress',
	);
	if ( in_array( $item->slug, $plugins ) ) {
		 // Siempre se actualizarán los plugins en este array
		return true;
	} else {
	 	// De lo contrario, se usará la respuesta normal de la API para decidir si actualizar o no
		return $update;
	}
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

Ir arriba ↑

Actualizaciones de traducción a través de un filtro

Las actualizaciones automáticas de archivos de traducción ya están habilitadas de forma predeterminada, al igual que las actualizaciones básicas menores.

Para deshabilitar las actualizaciones de archivos de traducción, utiliza lo siguiente:

add_filter( 'auto_update_translation', '__return_false' );

Ir arriba ↑

Deshabilitar correos electrónicos a través de un filtro

// Deshabilitar los correos electrónicos de actualización
add_filter( 'auto_core_update_send_email', '__return_false' );

Este filtro también se puede usar para manipular correos electrónicos de actualización según el correo electrónico $type (success, fail, critical), objeto de tipo de actualización $core_update o $result:

/* @param bool   $send        Whether to send the email. Default true.
@param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
@param object $core_update The update offer that was attempted.
@param mixed  $result      The result for the core update. Can be WP_Error.
*/
apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result );

Ir arriba ↑

Recursos