Las actualizaciones automáticas de WordPress, introducidas en la versión 3.7, es una característica esencial que debería estar siempre activada, como mínimo con la configuración preestablecida. Así se asegura que los parches de seguridad se instalarán en nuestra web tan pronto como estén disponibles. A pesar de que personalmente tenga esta opinión, te enseñaré como puedes desactivarlas si por alguna extraña situación lo necesitas. Empecemos.

Tipos de actualizaciones y configuración preestablecida

La actualizaciones automáticas están divididas en varios grupos:

  1. Actualizaciones del núcleo (core): se dividen a su vez en:
    • Actualizaciones de desarrollo (conocidas como “bleeding edge”; las versiones de desarrollo no son adecuadas para su uso en sitios en producción).
    • Actualizaciones menores (generalmente son actualizaciones de mantenimiento y de seguridad). Se identifican por cambios en el número de versión del segundo punto, por ejemplo, la actualización de versiones de 4.2 a 4.2.1 o de 4.3.2 a 4.3.3 serían actualizaciones menores.
    • Actualizaciones mayores (pueden incluir nuevas características o quitar antiguas, depreciar código, etc). El número de versión cambia en el número del primer punto o en el número entero. Por ejemplo, actualizaciones de 4.8.6 a 4.9 o de 4.9.8 a 5.0 serían actualizaciones mayores.
  2. Actualizaciones de plugins
  3. Actualizaciones de temas
  4. Actualizaciones de archivos de traducción

Por defecto, WordPress tiene activadas las actualizaciones menores del núcleo y de archivos de traducción. Además, si has instalado una versión de desarrollo, las actualizaciones de desarrollo también estarán activadas.

Las actualizaciones automáticas de plugins y temas también están activadas por defecto pero sólo para actualizaciones críticas de seguridad y bajo el control del equipo de seguridad de WordPress.org que ha de aprobar la actualización previamente para ser automatizada.

Configuración de las actualizaciones automáticas

WordPress nos deja la puerta abierta para que podamos elegir que tipo de actualizaciones automáticas permitimos en nuestro sitio: todas, ninguna o sólo algunos tipos. Podemos realizar esta configuración mediante dos métodos: constantes en wp-config.php o utilizando filtros en un plugin. Veamos algunos ejemplos.

1

Desactivar todas las actualizaciones

Para desactivar todo tipo de actualizaciones automáticas tenemos estas dos opciones:

En wp-config.php

define( 'AUTOMATIC_UPDATER_DISABLED', true );
// Puedes colocar este código dónde quieras, desde la primera línea de wp-config.php
// siempre que quede por encima de la siguinete línea
/* ¡Eso es todo, deja de editar! Feliz blogging */

Utilizando filtros

add_filter( 'automatic_updater_disabled', '__return_true' );
2

Opciones de actualización del core

Las actualizaciones automáticas del core (de WordPress en sí mismo, no de plugins y temas) y sus diferentes tipos se configuran a través de la constante WP_AUTO_UPDATE_CORE o del filtro auto_update_core estableciendo diferentes valores.

En wp-config.php

WP_AUTO_UPDATE_CORE se puede definir con los siguientes valores:

  • true: actualizaciones automáticas del core activadas, incluyendo actualizaciones menores, mayores y de desarrollo. A tener en cuenta: sólo las instalaciones con versiones de desarrollo de WordPress recibirán actualizaciones de desarrollo aunque tengan esta constante definida como true.
  • false: todas las actualizaciones automáticas del core están desactivadas.
  • minor: sólo las actualizaciones menores están activadas; no las mayores ni las de desarrollo.

Por ejemplo:

//todas las actualizaciones del core desactivadas
define( 'WP_AUTO_UPDATE_CORE', false );
//Todas las actualizaciones del core activadas
define( 'WP_AUTO_UPDATE_CORE', true );
//Sólo actualizaciones menores activadas
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Utilizando filtros

Para configurar las actualizaciones del core disponemos de varios filtros a los que podemos pasar _return_false o _return_true como callback:

  • auto_update_core: activa/desactiva todo tipo de actualizaciones del core.
  • allow_dev_auto_core_updates: activa/desactiva las actualizaciones de desarrollo del core.
  • allow_minor_auto_core_updates: activa/desactiva las actualizaciones menores del core.
  • allow_major_auto_core_updates: activa/desactiva las actualizaciones mayores del core.

Por ejemplo:

// Desactivar todas las actualizaciones del core
add_filter('auto_update_core', '__return_false');

// Desactivar actualizaciones automáticas menores
add_filter('allow_minor_auto_core_updates', '__return_false');
 
// Activar actualizacones automáticas mayores
add_filter('allow_major_auto_core_updates', '__return_true');
 
// Activar actualizaciones automáticas de desarrollo
add_filter('allow_dev_auto_core_updates', '__return_true');

3

Actualizaciones automáticas de temas y plugins

Las actualizaciones automáticas de plugins y temas están activadas por defecto sólo para actualizaciones críticas de seguridad que han de contar con la autorización previa del equipo de seguridad de WordPress.org. Se pueden activar las actualizaciones de tema y plugins en general, no sólo las críticas, o desactivarlas por completo. Para ello hay que utilizar los filtros auto_update_theme y auto_update_plugin, no hay opción de hacerlo en wp-config.php:

// Desactivar todas las actualizaciones automáticas de plugins
// incluyendo las actualizaciones de seguridad
add_filter( 'auto_update_plugin', '__return_false' );

// Desactivar todas las actualizaciones automáticas de temas
// incluyendo las actualizaciones de seguridad
add_filter( 'auto_update_theme', '__return_false' );

// Activar todas (TODAS) las actualizaciones automáticas de temas y plugins
add_filter( 'auto_update_theme', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );

Desactivación de plugins o temas específicos

Utilizando los filtros anteriores podemos controlar en que plugins o temas exactamente queremos activar o desactivar las actualizaciones automáticas. Por ejemplo, con el siguiente snippet se activarían las actualizaciones automáticas para el plugin Disqus y en el resto de plugins dejaríamos el comportamiento normal de WordPress, es decir, para el resto de plugins se realizarían sólo las actualizaciones críticas de seguridad aprobadas por WordPress.org.

add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );
function auto_update_specific_plugins ( $update, $item ) {

    // Array de plugins que se van a actualizar siempre
    $plugins = array ( 'disqus', );

    if ( in_array( $item->slug, $plugins ) ) {

        // Si el slug del item que se va a actualizar están en nuestro array
        // Activar la actualización
        return true;

    } else {

        // En caso contrario, dejar WordPress hacer el trabajo normal
        return $update;

    }

}
4

Actualizaciones automáticas de traducciones

Las actualizaciones automáticas de traducciones están activadas por defecto. Para desactivarlas se debe utilizar el siguiente filtro:

// Desactivar actualizaciones automáticas de traducciones
add_filter( 'auto_update_translation', '__return_false' );

Si necesitas cambiar las traducciones, no modifiques los archivos originales o perderás los cambios con las actualizaciones; en su lugar puedes sobreescribirlas utilizando el filtro gettext.

Mi consejo: desactiva los auto-updates sólo en situaciones especiales

La configuración de las actualizaciones automáticas que viene preestablecida en WordPress abarca sólo actualizaciones menores del core, actualizaciones de traducciones y actualizaciones críticas de seguridad de plugins y temas. Las razones para dejar activadas las actualizaciones críticas de seguridad creo que son bastante obvias. El caso de las actualizaciones menores del core, se supone que sólo incluyen la corrección de bugs y problemas de seguridad; no incluyen cambios que puedan afectar al funcionamiento de plugins y temas, así que no debería haber nada en tu web que deje de funcionar.

Si las actualizaciones menores del core corrigen fallos de funcionamiento y de seguridad sin poner en peligro el funcionamiento de nuestro sitio: ¿qué razón puede existir para desactivarlas? Sólo se me ocurre una: que tu sitio sea ya un desastre y quieras mantener ese desastre a prueba de actualizaciones.

Además, WordPress puede sacar actualizaciones de seguridad para versiones antiguas sin realizar un update mayor que pueda romper tu web (necesario WP 3.7 o superior); por ejemplo, con WP 4.0.1 se solucionó un problema grave de seguridad; además de WP 4.0.1, se publicaron actualizaciones que solucionaban este problema para versiones antiguas, en concreto se publicaron las versiones 3.9.3, 3.8.5 y 3.7.5, todas ellas listas para ser instaladas de forma automática en los sitios con las actualizaciones menores del core activadas.

En el caso de las actualizaciones críticas de seguridad de plugins y temas, si tienes la última versión de WordPress todo debería ir bien, pero si tienes una versión antigua de WP pueden aparecer problemas si las actualizaciones no son compatibles con tu vieja web. ¿Y qué? Una actualización crítica de seguridad es prioritaria; si algo deja de funcionar en tu web después de la actualización, arréglalo, pero no dejes, bajo ningún concepto, la brecha de seguridad sin solucionar o el resultado puede ser bastante peor. Puede que sea hora de dedicar algún tiempo para actualizar tu web.

Por estas razones, para mí es un deber dejar activadas las actualizaciones menores del core y las actualizaciones críticas de plugins y temas. Incluso se puede ir más allá, si eres de los que se mantiene informado sobre las decisiones que se van tomando en el equipo de desarrollo de WordPress, es fácil adelantarse a los cambios planeados para el futuro pudiendo activar incluso las actualizaciones mayores del core (aunque si utilizas plugins y temas de terceros puede ser complicado). Sólo en situaciones especiales, y de forma temporal, tendría sentido desactivar completamente las actualizaciones automáticas.

He mentido

He mentido al decir que las actualizaciones menores del core no suponen cambios que rompan algo de tu web. No deberían, pero la verdad es que ha habido casos en los que efectivamente una actualización menor ha roto el funcionamiento de algunos plugins y temas. Bueno, la mentira ha sido a medias: en todos los casos ocurridos hasta el momento la culpa ha sido completamente del plugin o tema en cuestión.

Por ejemplo, la actualización de WP 4.0 a WP 4.0.1 rompió el funcionamiento de muchos shortcodes incluidos en plugins y temas. Hubo muchos usuarios que enloquecieron de enfado, pero lo cierto es que si nos ponemos estrictos, la culpa fue sólo de los desarrolladores de esos plugins y temas: habían implementado los shortcodes saltándose el API y recomendaciones de WordPress; las malas prácticas de los desarrolladores de esos plugins quedaron en evidencia.

Pero claro, este es el punto de vista de un desarrollador, si le preguntas a un usuario de WorPress, lo único que sabe es que WordPress le dijo que era seguro y recomendable dejar las actualizaciones menores activadas, y que esto le iba a solucionar posibles problemas sin causarle ninguno; y de repente, zas!!, su web empieza a dar fallos. Algo habría que hacer respecto a estos usuarios, ellos son al fin y al cabo la gran base de WordPress y de su experiencia depende todo. Ir a explicarle que no es culpa de WordPress, que es de otro, no arregla su decepción.

En cualquier caso, si decides desactivar las actualizaciones en WordPress, el plugin WP Updates Notifier puede ayudarte a mantenerte informado de las actualizaciones disponibles para que puedas tomar acción en caso de actualizaciones importantes.