Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🧹 Cómo eliminar por completo un plugin de WordPress: limpieza paso a paso de base de datos y archivos

🧹 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

wp_* (prefijo del plugin)

Crecimiento de la base de datos, consultas más lentas

Filas en wp_options

option_name LIKE %pluginname%

Opciones autoload saturadas

Filas en wp_postmeta

meta_key LIKE %pluginname%

Datos muertos al recuperar entradas

Shortcodes en el contenido

Texto de entradas/páginas

[shortcode] roto en la portada

Trabajos cron

wp_optionscron

Solicitudes HTTP innecesarias a wp-cron

Archivos fuera de la carpeta del plugin

wp-content/uploads/

Desorden en disco

Reglas en .htaccess

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 wp-content/plugins/

Eliminados

Código

No se ejecuta, disponible para lectura

Ausente

Tablas de la base de datos

Conservadas

Depende del desarrollador

Ajustes

Conservados

Depende de uninstall.php

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.

WordPress plugin list with delete button

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 exportados
  • wp-content/ngg/: NextGEN Gallery
  • wp-content/ewww/: EWWW Image Optimizer
  • wp-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:

1define('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:

1add_shortcode('pluginshortcode', '__return_false');
Code in functions.php to disable plugin shortcode

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):

1SELECT * 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:

1DELETE 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! */):

1define('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_:

1SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';
SQL query to find WooCommerce records in the database

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:

1SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Finding Yoast SEO meta records in wp_postmeta table

Tras confirmar que son datos de Yoast, ejecute:

1DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Luego, wp_usermeta:

1SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';
Finding Yoast SEO records in wp_usermeta table

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:

1SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
SQL query to find Akismet data in comments

Luego:

1DELETE 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:

1OPTIMIZE 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:

1SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';
SQL query to clean wp_options for Gravity Forms

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:

1SELECT * 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.

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:

1SELECT * 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:

1SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';
SQL query to clean EWWW Image Optimizer options

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_ o wp_wf. No toque las tablas del sistema de WordPress (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta y wp_usermeta) con DROP; en ellas solo puede limpiar con DELETE selectivo.

¿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.php del tema, donde puede haber quedado una llamada a una función del plugin sin una alternativa. Localice dichas llamadas y envuélvalas en function_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_options y wp_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_*_options y wp_*_postmeta para 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.