
Entras al escritorio y aparece una ventanita del navegador: «Error: You do not have permission to manage plugins». Aprietas Aceptar, cambias de pantalla y vuelve a salir. Una y otra vez. Y lo más desconcertante: eres administrador y puedes hacer todo lo demás.
Tranquilidad: tu sitio no está roto y nadie te quitó permisos. Vamos a ver de dónde sale, cómo confirmarlo y cómo quitarlo sin desarmar una medida de seguridad que probablemente alguien puso a propósito.
La pista está en el idioma
Si tu WordPress está en español y el mensaje sale en inglés, casi seguro no viene de WordPress. Los avisos de permisos del núcleo están traducidos («Lo siento, no tienes permisos para…»). Un mensaje en inglés en un escritorio en español apunta a un tema o a un plugin.
Lo más común es un tema que, en todas las pantallas del escritorio, hace esto:
- Carga un archivo JavaScript (a menudo llamado algo como
plugin-installer.js) para ofrecerte instalar su plugin complementario. - Ese script pregunta al servidor, en segundo plano, si el plugin ya está instalado.
- El servidor revisa si puedes instalar plugins. Si no puedes, responde con el error, y el script te lo muestra con
alert(), esa ventana que bloquea todo hasta que aprietas Aceptar.
Fíjate en el detalle: el mensaje dice manage (gestionar), pero lo que se revisa es si puedes instalar. Y eso es otra cosa.
Si soy administrador, ¿por qué no puedo instalar plugins?
En WordPress, activar o desactivar plugins e instalarlos son permisos distintos. Hay tres situaciones en las que el permiso de instalar desaparece:
- **La constante
DISALLOW_FILE_MODSestá activa** enwp-config.php. Bloquea cualquier cambio de archivos desde el escritorio: instalar, actualizar o borrar plugins y temas, actualizar WordPress y usar el editor de archivos. Afecta a todos, administradores incluidos. La suelen activar herramientas de gestión de sitios, el hosting, un plugin de seguridad o alguien a mano. - Tu usuario no es administrador: editores, autores o gestores de tienda nunca pueden instalar plugins, así que el aviso les salta siempre.
- Es un multisitio: ahí solo el superadministrador instala plugins.
Cómo confirmarlo en dos minutos
- Mira el menú Plugins. Si no aparece Añadir nuevo plugin, no tienes permiso de instalación.
- **Mira el
wp-config.php** (por el Administrador de archivos de cPanel) y buscaDISALLOW_FILE_MODS. - Busca la petición culpable. Pulsa F12, ve a la pestaña Red, escribe
admin-ajaxen el filtro y recarga. Verás una petición cuya respuesta trae el mensaje. En la columna Iniciador aparece el archivo.jsque la lanzó, y su ruta te dice si es del tema (/themes/…) o de un plugin (/plugins/…). - Con WP-CLI, si lo tienes, cambia
tu_usuariopor el tuyo:
wp eval 'var_dump( defined( "DISALLOW_FILE_MODS" ) && DISALLOW_FILE_MODS, current_user_can( "install_plugins" ) );' --user=tu_usuario
Si responde bool(true) y bool(false), la constante está activa y tu usuario no puede instalar. Caso resuelto.
Lo que no conviene hacer
- Borrar la constante. El aviso desaparece, pero cambias seguridad por comodidad.
DISALLOW_FILE_MODSimpide que alguien que logre entrar a tu escritorio instale un plugin con una puerta trasera o meta código en el tema. - Darles permiso de instalar plugins a los editores con un plugin de roles. Es abrir una puerta enorme para quitar una molestia chica.
- **Desactivar JavaScript del escritorio o bloquear
admin-ajax.php.** Romperías media administración.
La solución buena: frenar el script, no la seguridad
Primero, actualiza el tema. Muchos desarrolladores ya corrigieron esto para que el script solo cargue en su propia pantalla. Si no, escríbeles: es un error de ellos.
Mientras tanto, puedes impedir que ese script cargue para quien no puede instalar plugins. Necesitas su nombre interno («handle»). Abre el código fuente de cualquier pantalla del escritorio (Ctrl+U) y busca el nombre del archivo, por ejemplo plugin-installer.js. Verás algo así:
<script src=".../themes/mi-tema/js/plugin-installer.js" id="mi-tema-plugin-installer-js"></script>
El handle es el id sin el -js final: en el ejemplo, mi-tema-plugin-installer. Ahora crea wp-content/mu-plugins/cwp-silenciar-instalador.php:
<?php
/**
* Plugin Name: Silenciar instalador del tema (Curso WordPress)
*/
add_action( 'admin_enqueue_scripts', function () {
if ( ! current_user_can( 'install_plugins' ) ) {
wp_dequeue_script( 'mi-tema-plugin-installer' ); // Cambia por tu handle.
}
}, 100 );
El aviso desaparece para quien no puede instalar, y si algún día quitas la constante, el tema vuelve a ofrecer su plugin con normalidad. La seguridad queda intacta.
Un detalle que poca gente sabe: DISALLOW_FILE_MODS también apaga las actualizaciones automáticas de WordPress, incluidas las de seguridad. Si la tienes activa, asegúrate de que alguien actualice por otra vía: el WP Toolkit de cPanel, una herramienta de gestión o WP-CLI con wp core update && wp plugin update --all, idealmente en una tarea programada.
¿No encuentras el handle o el aviso sigue saliendo? Comparte en el foro la línea del <script> que encontraste y el nombre de tu tema, y te ayudamos a armar el snippet exacto.





