Optimizar la base de datos de WordPress puede marcar la diferencia en la velocidad y estabilidad del sitio. WP-CLI ofrece una forma potente y directa de hacerlo desde la terminal.
Mantener una base de datos optimizada es fundamental para el buen funcionamiento de cualquier sitio WordPress. Con el paso del tiempo, la base de datos acumula revisiones de entradas, transitorios caducados, comentarios spam, tablas fragmentadas y otros elementos innecesarios que afectan al rendimiento. Aunque existen numerosos plugins para realizar tareas de mantenimiento, el uso de WP-CLI (WordPress Command Line Interface) es una alternativa ligera, eficiente y muy recomendable para administradores avanzados.
Tabla de contenidos
En este artículo se explica cómo utilizar WP-CLI para optimizar la base de datos de WordPress, desde acciones básicas de limpieza hasta operaciones más avanzadas de optimización estructural.
¿Qué es WP-CLI?
WP-CLI es una herramienta de línea de comandos para gestionar instalaciones de WordPress. Permite realizar tareas administrativas sin necesidad de acceder al panel web, como instalar plugins, actualizar temas, crear usuarios y, en este caso, optimizar la base de datos. Su uso resulta especialmente útil en entornos de servidores donde se prioriza el rendimiento y el control preciso del sistema.
Requisitos previos
Antes de comenzar, asegúrate de contar con lo siguiente:
- Acceso SSH al servidor donde está instalado WordPress.
- WP-CLI instalado en el sistema.
- Permisos adecuados para ejecutar comandos (usuario propietario o con privilegios).
- Copia de seguridad reciente de la base de datos (imprescindible antes de cualquier operación de limpieza u optimización).
Para hacer una copia de seguridad rápida desde WP-CLI:
wp db export respaldo.sql
Comandos WP-CLI para limpieza y optimización de base de datos
1. Limpiar revisiones de entradas
Las revisiones pueden acumularse rápidamente y ocupar espacio innecesario.
wp post delete $(wp post list --post_type='revision' --format=ids) --force
Este comando elimina todas las revisiones existentes en la base de datos.
2. Eliminar comentarios en papelera o spam
Limpieza de comentarios spam:
wp comment delete $(wp comment list --status=spam --format=ids) --force
Limpieza de comentarios en papelera:
wp comment delete $(wp comment list --status=trash --format=ids) --force
3. Eliminar transitorios caducados
Los transitorios son entradas temporales en la base de datos que WordPress usa para almacenar datos en caché. A menudo quedan entradas obsoletas.
wp transient delete --expired
Y para eliminar todos los transitorios (caducados o no):
wp transient delete --all
4. Optimizar tablas de la base de datos
Una de las formas más efectivas de mejorar el rendimiento es optimizar las tablas que han sido modificadas frecuentemente (por ejemplo, wp_options
o wp_postmeta
).
wp db optimize
Este comando ejecuta OPTIMIZE TABLE
sobre todas las tablas de la base de datos, compactando y reorganizando su estructura interna.
5. Reparar tablas dañadas
En casos donde haya tablas corruptas o errores de acceso, se puede intentar una reparación:
wp db repair
Automatización mediante cron o scripts
Para automatizar el mantenimiento periódico, puede crearse un script bash que ejecute los comandos anteriores y se programe con cron
. Por ejemplo:
#!/bin/bash
cd /var/www/html # Ruta de tu instalación WordPress
wp post delete $(wp post list --post_type='revision' --format=ids) --force
wp comment delete $(wp comment list --status=spam --format=ids) --force
wp comment delete $(wp comment list --status=trash --format=ids) --force
wp transient delete --expired
wp db optimize
Este script puede guardarse como optimize-db.sh
y añadirse al cron del sistema:
0 3 * * 0 /bin/bash /ruta/al/script/optimize-db.sh >> /var/log/wp-optimize.log 2>&1
Esto lo ejecutará cada domingo a las 3:00 AM.
Recomendaciones finales
- Evita automatizar operaciones destructivas (como eliminación de revisiones) sin validar primero que no afecten a procesos editoriales.
- Asegúrate de que el comando
wp
se ejecuta con el usuario correcto que tenga acceso al entorno WordPress. - Consulta el fichero
wp-config.php
para verificar la conexión a la base de datos si se produce algún error.
WP-CLI permite mantener la base de datos de WordPress optimizada de forma precisa y eficiente, sin la sobrecarga que suponen algunos plugins. Dominar estas operaciones no solo mejora el rendimiento del sitio, sino que ofrece un mayor control sobre su mantenimiento y escalabilidad, especialmente en entornos profesionales o con múltiples instalaciones WordPress.
Script de mantenimiento automatizado para WordPress con WP-CLI
Puedes guardar el siguiente contenido como un archivo llamado optimize-wp-db.sh
y programarlo mediante cron
para ejecutarse de forma periódica.
#!/bin/bash
# Ruta absoluta a la instalación de WordPress
WP_PATH="/var/www/html"
# Fecha para logs
FECHA=$(date '+%Y-%m-%d %H:%M:%S')
# Cambiar al directorio de WordPress
cd "$WP_PATH" || exit
echo "[$FECHA] Iniciando mantenimiento de WordPress en $WP_PATH"
# Exportar copia de seguridad de la base de datos
wp db export "respaldo-autom-$FECHA.sql" --quiet
echo "[$FECHA] Copia de seguridad realizada."
# Eliminar revisiones de entradas
wp post delete $(wp post list --post_type='revision' --format=ids) --force --quiet
echo "[$FECHA] Revisiones eliminadas."
# Eliminar comentarios spam y en papelera
wp comment delete $(wp comment list --status=spam --format=ids) --force --quiet
wp comment delete $(wp comment list --status=trash --format=ids) --force --quiet
echo "[$FECHA] Comentarios spam y en papelera eliminados."
# Eliminar transitorios caducados
wp transient delete --expired --quiet
echo "[$FECHA] Transitorios caducados eliminados."
# Optimizar tablas
wp db optimize --quiet
echo "[$FECHA] Base de datos optimizada."
# Fin del script
echo "[$FECHA] Mantenimiento completado."
Programación recomendada con cron (ejecutar semanalmente, domingo a las 03:00):
0 3 * * 0 /bin/bash /ruta/a/optimize-wp-db.sh >> /var/log/wp-maintenance.log 2>&1
Este script permite mantener limpia y optimizada tu instalación WordPress de forma automática y segura.
¿Te gustaría que prepare también una versión para multisite o para múltiples instalaciones WordPress en el mismo servidor?