WordPress se actualiza de forma regular varias veces al año con mejoras, nuevas características y parches de seguridad. Las actualizaciones se pueden dividir entre mayores y menores. Las actualizaciones mayores son las que incorporan nuevas características y cambios en el API de desarrollo. Por su parte, las actualizaciones menores suelen incorporar sólo parches de seguridad y corrección de bugs sin introducir cambios en el API o nuevas características.

WordPress 3.7 introdujo una característica muy importante: las actualizaciones automáticas. De forma predeterminada, las actualizaciones automáticas sólo están activadas para las versiones menores y las versiones mayores tienen que seguir instalándose manualmente.

Cada vez que hay una actualización disponible, se muestra un mensaje en la parte superior del área de administración para que sepas que es necesario actualizar WordPress. Este mensaje se muestra a todos los usuarios y puede ser un poco molesto en muchas webs. Así que vamos a ver como lo podemos eliminar.

El aviso de actualización es generado por la función update_nag(), ejecutada en el action admin_notices con prioridad 3. Por tanto, si seguimos las instrucciones de remove_action(), podemos impedir que la función update_nag() se ejecute del siguiente modo:

add_action( 'admin_head', 'remove_update_nag' );
function remove_update_nag() {
    if ( ! current_user_can( 'update_core' ) ) {
        remove_action( 'admin_notices', 'update_nag', 3 );
    }
}

Fíjate que hemos comprobado la capacidad update_core, por lo que el aviso seguirá mostrándose a los usuarios que puedan actualizar el core, es decir, a los administradores. De esta forma no se pierde un aviso tan importante como es la necesidad de actualizar WordPress, algo que debería hacerse siempre en la mayor brevedad posible, no tanto por las nuevas características que se incorporen sino por las mejoras y parches de seguridad.

  • camilo

    Gracias por tu aporte me funcionó, pero para que le salga el mensaje solo al usuario administrador cámbiale if( !current_user_can('manage_options') ).

    • Hola Camilo!!

      Cómo son mensajes de actualizaciones, prefiero comprobar capacidades relacionadas con eso mismo, con actualizaciones. En mi opinión es más correcto y apropiado.

      En principio, tanto la capacidad manage_options como la capacidad update_core son capacidades que solo tienen administradores. Así que, en una instalación predeterminada, tanto tu propuesta como el ejemplo del tutorial tendrían el mismo resultado.

      Pero hay que tener en cuenta que la relación entre capacidades y roles de usuario puede modificarse a nuestro antojo (o más bien al antojo del dueño del sitio según sus necesidades). Podemos quitarle capacidades a un rol y darselas a otro, incluso quitarle y darle capacidades específicas a usuarios concretos independientemente del rol que tengan asignado, así que no se debe confiar plenamente en los roles sino en las capacidades que tenga el usuario, y si hay capacidades específicas para lo que estamos trabajando, comprueba esas capacidades y no otras.

      Por ejemplo, si comprobamos la capacidad manage_options como propones, estamos comprobando si el usuario puede cambiar la configuración del sitio pero NO si puede actualizarlo. Entonces podremos encontrarnos con usuarios que NO pueden realizar tareas de actualización pero que SI ven los mensajes de actualización. Y también podremos encontrarnos con usuarios que SI pueden realizar tareas de actualización pero que NO ven los avisos.

      Así que, lo siento, pero no me parece buena tu propuesta. Es más, te recomiendo la mía 😉