
🧹 Cómo eliminar por completo un plugin de WordPress: limpieza paso a paso de base de datos y archivos
Su sitio se ralentiza hasta casi detenerse, las copias de seguridad se disparan a un gigabyte y phpMyAdmin muestra docenas de tablas con prefijos de plugins que usted «eliminó» hace un año. ¿Le suena familiar?
El botón estándar «Eliminar» en la sección de plugins solo elimina la carpeta de wp-content/plugins. Todo lo demás (tablas, opciones, trabajos cron, shortcodes en las entradas) permanece en la base de datos y en el disco. Los desarrolladores gestionan la limpieza de manera diferente: algunos limpian diligentemente tras de sí mediante uninstall.php, mientras que otros lo dejan todo intacto.
A continuación encontrará un algoritmo completo para eliminar un plugin sin dejar rastro: desde el escritorio hasta SQL manual. Con copias de seguridad en cada etapa e instrucciones precisas para plugins populares.
💡 Resumen rápido:
- Eliminar a través del escritorio es solo el primer paso; las tablas, los shortcodes y los trabajos cron requieren una limpieza por separado
- Antes de cualquier operación en la base de datos, realice una copia de seguridad completa (usando las herramientas integradas de su alojamiento o un plugin)
- WooCommerce, Yoast SEO, Wordfence y otros plugins populares tienen sus propias constantes y consultas SQL
- Un plugin desactivado no está «apagado», sino «dormido»; sus archivos siguen siendo accesibles para acceso directo y representan un vector de ataque
Por qué el botón «Eliminar» no es suficiente
WordPress llama al uninstall.php del plugin o a una función de devolución de llamada desde el archivo principal al eliminarlo. Pero esto solo funciona si el desarrollador creó dicho archivo. En la práctica, aproximadamente la mitad de los plugins del catálogo de WordPress.org carecen de uninstall.php o lo implementan parcialmente: eliminan la carpeta pero dejan la base de datos intacta.
Lo que queda tras la eliminación estándar:
Tipo de remanente | Dónde buscar | Riesgo |
|---|---|---|
Tablas de la base de datos |
| Crecimiento de la base de datos, consultas más lentas |
Filas en |
| Opciones |
Filas en |
| Datos muertos al recuperar entradas |
Shortcodes en el contenido | Texto de entradas/páginas |
|
Trabajos cron |
| Solicitudes HTTP innecesarias a wp-cron |
Archivos fuera de la carpeta del plugin |
| Desorden en disco |
Reglas en | Raíz del sitio | Conflictos con nuevos plugins |
Las filas con la bandera autoload son especialmente críticas: WordPress las carga en cada solicitud. Cincuenta filas autoload adicionales añaden entre 30 y 80 ms al tiempo de respuesta del servidor. Parece insignificante a primera vista, pero con 100.000 visitas mensuales, es un impacto notable en el rendimiento.
Desactivación vs eliminación: cuál es la diferencia
La diferencia es fundamental, y es útil comprenderla antes de comenzar la limpieza.
Criterio | Desactivación | Eliminación completa |
|---|---|---|
Archivos del plugin | Permanecen en | Eliminados |
Código | No se ejecuta, disponible para lectura | Ausente |
Tablas de la base de datos | Conservadas | Depende del desarrollador |
Ajustes | Conservados | Depende de |
Actualizaciones | Llegan (para plugins gratuitos de.org) | No llegan |
Vulnerabilidades | El código en el servidor es un vector de ataque | Sin amenaza |
Reversibilidad | Un clic y el plugin vuelve a estar activo | Solo desde copia de seguridad |
Un plugin desactivado no está «apagado», sino «dormido». Los archivos PHP residen físicamente en el servidor. Si se descubre una vulnerabilidad en el código, un atacante puede acceder al archivo directamente a través de la ruta en wp-content/plugins/, eludiendo la lógica de WordPress. Los cortafuegos WAF no resuelven este problema: la mejor protección es eliminar el código no utilizado del servidor por completo.
La regla es simple: si no ha usado un plugin durante más de una semana, elimínelo. Reconfigurarlo es más rápido que lidiar con una brecha a través de un agujero en código abandonado.
Limpieza paso a paso: 4 etapas
Paso 1: Eliminación a través del escritorio
La primera etapa es estándar. Vaya a Plugins → Instalados, encuentre el que necesita. Los plugins activos se resaltan con una barra azul, los desactivados no.
Haga clic en «Eliminar» bajo el nombre, confirme con el botón «Sí, eliminar estos archivos». WordPress llamará al uninstall.php del plugin (si existe) y eliminará la carpeta de wp-content/plugins.

Para plugins simples (un widget ligero, reemplazo del logo de la página de inicio de sesión), la limpieza termina aquí. No crean tablas ni escriben en wp_postmeta. Pero los plugins de caché, SEO, seguridad, galerías y maquetadores de páginas requieren acciones adicionales.
Paso 2: Limpieza de archivos vía FTP
Algunos plugins crean carpetas fuera de wp-content/plugins/. Ubicaciones típicas:
wp-content/uploads/plugin-name/: caché, imágenes comprimidas, archivos exportadoswp-content/ngg/: NextGEN Gallerywp-content/ewww/: EWWW Image Optimizerwp-content/backup/: plugins de copia de seguridad
Conéctese al servidor vía FTP (FileZilla, WinSCP) o al gestor de archivos del alojamiento. Navegue a wp-content/, encuentre la carpeta con el nombre del plugin y elimínela. Antes de eliminar, descargue la carpeta localmente; si contenía archivos subidos por usuarios, restáurelos.
Los plugins de caché (WP Rocket, W3 Total Cache, LiteSpeed Cache) escriben adicionalmente en wp-content/cache/ y crean wp-content/advanced-cache.php. Elimine el archivo advanced-cache.php manualmente vía FTP, y en wp-config.php encuentre y elimine esta línea:
1 define('WP_CACHE', true);
Paso 3: Eliminación de shortcodes del contenido
Los plugins que añaden shortcodes (formularios, galerías, sliders, tablas) dejan [shortcode] al descubierto en el texto de las entradas tras la eliminación. Queda desordenado y confunde a los lectores.
Una forma rápida de silenciar los shortcodes no utilizados es una línea en el functions.php de su tema activo:
1 add_shortcode('pluginshortcode', '__return_false');

Reemplace pluginshortcode con la etiqueta de su shortcode. Por ejemplo: nggallery, gravityform o contact-form-7. La función __return_false devuelve false, y el shortcode desaparece de la portada sin ser eliminado del texto de la entrada.
Añada el código a través de un tema hijo o del plugin Code Snippets; las ediciones al functions.php del tema padre se perderán en la próxima actualización. Si decide restaurar el plugin más tarde, simplemente elimine esta línea.
Paso 4: Limpieza de la base de datos
La etapa más crítica. Haga una copia de seguridad completa de la base de datos antes de cualquier consulta SQL de eliminación; exportar a través de phpMyAdmin toma medio minuto y le salva de errores irreversibles.
4a. Encuentre las tablas del plugin. Vaya a phpMyAdmin (a través de cPanel o del panel de administración de su alojamiento), seleccione la base de datos del sitio. Busque tablas con el prefijo del plugin: wp_wc_* (WooCommerce), wp_yoast_* (Yoast SEO), wp_wf* (Wordfence). Selecciónelas, elija «Eliminar» en la parte inferior → confirme.
4b. Automatización mediante Advanced Database Cleaner. Si prefiere no trabajar directamente en phpMyAdmin, instale Advanced Database Cleaner. Este plugin gratuito analiza la base de datos, encuentra tablas y registros huérfanos y los elimina con un solo clic.
4c. Limpie wp_options. Incluso si el plugin no creó tablas separadas, es casi seguro que escribió en wp_options. Ejecute en phpMyAdmin (pestaña SQL):
1 SELECT * FROM wp_options WHERE option_name LIKE '%pluginname%';
Sustituya pluginname por una parte del nombre del plugin. Verifique que las filas pertenecen realmente al plugin eliminado y, a continuación:
1 DELETE FROM wp_options WHERE option_name LIKE '%pluginname%';
4d. Limpieza de trabajos cron. Algunos plugins registran sus propios eventos cron. Instale WP Crontrol; muestra todos los trabajos cron registrados en una sola lista. Localice los eventos con el nombre del plugin y elimínelos manualmente.
Particularidades de la eliminación de plugins populares
Cada plugin importante deja una huella única. A continuación, las instrucciones precisas para los más comunes.
WooCommerce
WooCommerce crea más de 16 tablas en la base de datos. Para que se limpien automáticamente al eliminarlo, añada en wp-config.php (antes de la línea /* That's all, stop editing! */):
1 define('WC_REMOVE_ALL_DATA', true);
Esta constante obliga a WooCommerce a ejecutar su uninstall.php completo al eliminarlo; se borrarán todas las tablas wp_woocommerce_* y wp_wc_*, incluidos productos, pedidos y cupones. La operación es irreversible, por lo que la copia de seguridad es obligatoria.
Después de eliminar el plugin, revise adicionalmente wp_options, ya que WooCommerce escribe docenas de filas allí con el prefijo woocommerce_:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';

Si encuentra filas y el plugin ya está eliminado, ejecute la consulta DELETE con la misma condición.
Yoast SEO
Yoast SEO deja registros en wp_postmeta y wp_usermeta, además de sus propias tablas wp_yoast_indexable y wp_yoast_seo_links.
Primero, limpie wp_postmeta:
1 SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Tras confirmar que son datos de Yoast, ejecute:
1 DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Luego, wp_usermeta:
1 SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';

Elimine lo que encuentre con una consulta DELETE análoga. Yoast también registra el evento cron wpseo_onpage_fetch; elimínelo mediante WP Crontrol. Borre manualmente las tablas wp_yoast_indexable y wp_yoast_seo_links a través de phpMyAdmin.
Akismet
Akismet es el plugin estándar de protección contra spam de comentarios, preinstalado con WordPress. Tras su eliminación, sus datos permanecen en wp_commentmeta:
1 SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';

Luego:
1 DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
Si el sitio tiene miles de comentarios, wp_commentmeta puede pesar decenas de megabytes. Tras la limpieza, optimice la tabla:
1 OPTIMIZE TABLE wp_commentmeta;
En nuestro artículo cómo detener el spam de comentarios en WordPress: las 18 soluciones encontrará más formas de combatir el spam.
Gravity Forms
Gravity Forms crea 9 tablas en la base de datos (wp_gf_*, wp_rg_*). Antes de eliminarlo, vaya a Formularios → Ajustes → Desinstalar y confirme. Luego elimine el plugin desde el escritorio.
Tras la eliminación, revise wp_options:
1 SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';

Elimine las filas encontradas con una consulta DELETE análoga.
Wordfence
Wordfence es uno de los plugins de seguridad más «pesados»: crea 23 tablas con el prefijo wp_wf*. La eliminación estándar desde el escritorio no las limpia.
El plugin auxiliar oficial Wordfence Assistant fue discontinuado por el desarrollador en diciembre de 2025. Por tanto, limpiamos manualmente: elimine el plugin principal Wordfence desde el escritorio, luego vaya a phpMyAdmin y ejecute:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wordfence%' OR option_name LIKE '%wf%';
Elimine las filas encontradas con una consulta DELETE usando la misma condición. Luego localice y elimine todas las tablas con el prefijo wp_wf (normalmente hay 23, desde wp_wfblockediplog hasta wp_wflivetraffichuman). Por FTP, elimine la carpeta wp-content/wflogs/ y el archivo wordfence-waf.php en la raíz del sitio si permanecen.
NextGEN Gallery
El plugin crea 3 tablas (wp_ngg_*) y una carpeta wp-content/ngg/ con las galerías subidas.
Primero, elimine el plugin desde el escritorio. Luego, por FTP, elimine la carpeta wp-content/ngg/, guardando antes las imágenes de las galerías si las necesita. En phpMyAdmin, ejecute:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ngg%';
Elimine las filas encontradas con una consulta DELETE usando la misma condición. Elimine manualmente las tablas wp_ngg_pictures, wp_ngg_galleries y wp_ngg_album.
EWWW Image Optimizer
EWWW almacena datos sobre cada imagen optimizada en la tabla wp_ewwwio_images: ruta del archivo, tamaño original, tamaño tras la compresión. También crea una carpeta wp-content/ewww/ con caché.
Elimine la carpeta por FTP. Luego, en phpMyAdmin:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';

Elimine lo que encuentre y elimine la tabla wp_ewwwio_images.
WP All Export
El plugin crea 4 tablas en la base de datos. Tras eliminarlo desde el panel de administración, acceda a phpMyAdmin, localice las tablas con el prefijo wp_pmxe_*, selecciónelas y ejecute «Drop». Adicionalmente, revise wp_options en busca de la clave pmxe; el plugin almacena allí los ajustes de la última exportación.
En el videotutorial a continuación encontrará más detalles sobre el ciclo completo de eliminación de plugins.
⁉️🤔 Preguntas frecuentes
¿Es seguro eliminar tablas de plugins directamente desde phpMyAdmin?
Es seguro bajo dos condiciones: que haya realizado una copia de seguridad completa de la base de datos y que haya identificado con precisión que las tablas pertenecen a un plugin ya eliminado. Las tablas de plugins de terceros siempre tienen un prefijo reconocible:
wp_wc_,wp_yoast_owp_wf. No toque las tablas del sistema de WordPress (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta y wp_usermeta) conDROP; en ellas solo puede limpiar conDELETEselectivo.
¿Qué debo hacer si el sitio muestra una pantalla en blanco tras eliminar un plugin?
Restaure el plugin desde la copia de seguridad: suba la carpeta por FTP e importe sus tablas. La causa más probable está en el archivo
functions.phpdel tema, donde puede haber quedado una llamada a una función del plugin sin una alternativa. Localice dichas llamadas y envuélvalas enfunction_exists()o elimínelas, y luego repita la eliminación del plugin.
¿Cómo encuentro todos los rastros de un plugin en la base de datos?
Instale el plugin Advanced Database Cleaner. Escanea todas las tablas en busca de datos huérfanos y muestra una lista completa: tablas, filas en
wp_optionsywp_postmeta, trabajos cron. Esto es más rápido y seguro que buscar manualmente en phpMyAdmin.
¿Debo eliminar los plugins que venían incluidos con el tema?
Sí, si no los está usando. Los plugins incluidos con temas (WPBakery Page Builder, Slider Revolution, ACF Pro) suelen venir con licencias limitadas y no reciben actualizaciones de seguridad. Un WPBakery desactivado y desactualizado con una vulnerabilidad conocida es una vía directa a una brecha de seguridad. Si no lo usa, elimínelo.
¿Puedo restaurar un plugin después de una eliminación completa?
Solo desde la copia de seguridad. Tras limpiar las tablas y
wp_options, todos los ajustes del plugin se pierden de forma permanente. Precisamente por eso el algoritmo anterior está construido de lo simple a lo radical: primero la eliminación estándar (reversible), luego la limpieza de archivos y solo al final la base de datos. Siga las etapas secuencialmente; no vaya directamente a phpMyAdmin.
¿Quedan datos del plugin en WordPress Multisite?
En Multisite, cada subsitio tiene sus propias tablas:
wp_2_options,wp_2_postmeta, etc. Tras eliminar un plugin desde el superadministrador, revise las tablas de cada subsitio (wp_*_optionsywp_*_postmetapara todos los ID de blog). El plugin podría haber estado activado en sitios individuales de la red y haber dejado registros en sus tablas.
Conclusión: cuándo se justifica una limpieza completa
Si tiene un sitio pequeño y elimina un plugin cada seis meses, la eliminación estándar desde el panel más una limpieza puntual de wp_options es suficiente.
Pero si su sitio tiene varios años, han pasado por él decenas de plugins y las copias de seguridad han crecido hasta un gigabyte, una limpieza quirúrgica siguiendo las instrucciones anteriores reducirá notablemente la base de datos y acelerará el panel de administración. En la práctica, hemos limpiado miles de registros huérfanos en wp_postmeta y docenas de tablas innecesarias, y el tiempo de respuesta del panel se redujo casi a la mitad.
Adquiera el hábito: tras eliminar un plugin, repase la lista de verificación (FTP → wp_options → cron → tablas). Diez minutos hoy le ahorran horas mañana, cuando una base de datos sobrecargada tire su sitio en un pico de tráfico.
¿Qué plugin dejó más basura tras su eliminación en su sitio? Cuéntenos en los comentarios.



