Bash / Basico / 2 min
Limpieza segura de transients WP
Script Bash con WP-CLI que elimina transients expirados, optimiza tablas y limpia revisiones de forma segura.
Los transients expirados, revisiones acumuladas y contenidos en papelera pueden inflar la base de datos de WordPress y ralentizar consultas.
Este script usa WP-CLI para limpiar de forma segura sin tocar plugins ni temas activos.
Guía de Implementación Paso a Paso
- Verifica que WP-CLI esté instalado.
BASH
wp --version
- Copia el script a la raíz de tu instalación WordPress.
- Dale permisos de ejecución.
BASH
chmod +x wp-cleanup.sh
- Ejecútalo.
BASH
./wp-cleanup.sh
- Opcionalmente, prográmalo en cron para ejecución mensual.
BASH
0 3 1 * * /ruta/a/wp-cleanup.sh >> /var/log/wp-cleanup.log 2>&1
BASH
#!/bin/bash
# KODFLUX - WordPress Database Cleanup Script
# Limpieza segura de transients, revisiones y datos huérfanos.
# Requisito: WP-CLI instalado y ejecución desde el root de WordPress.
set -e
WP_PATH="${1:-.}"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "WordPress Cleanup - $DATE"
echo "Path: $WP_PATH"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if ! command -v wp &> /dev/null; then
echo "WP-CLI no encontrado. Instálalo: https://wp-cli.org"
exit 1
fi
if ! wp core is-installed --path="$WP_PATH" 2>/dev/null; then
echo "Instalación de WordPress no encontrada en: $WP_PATH"
exit 1
fi
echo ""
echo "Estado de la base de datos ANTES de limpiar:"
wp db size --path="$WP_PATH" --tables
echo ""
echo "Paso 1/5 - Eliminando transients expirados..."
TRANSIENTS=$(wp transient delete --all --path="$WP_PATH" --expired 2>&1 || true)
echo " $TRANSIENTS"
echo ""
echo "Paso 2/5 - Eliminando TODAS las revisiones de posts..."
REVISION_IDS=$(wp post list --post_type=revision --format=ids --path="$WP_PATH" 2>/dev/null || true)
if [ -n "$REVISION_IDS" ]; then
wp post delete $REVISION_IDS --force --path="$WP_PATH"
else
echo " Sin revisiones para eliminar"
fi
echo ""
echo "Paso 3/5 - Eliminando comentarios spam y papelera..."
SPAM_IDS=$(wp comment list --status=spam --format=ids --path="$WP_PATH" 2>/dev/null || true)
TRASH_COMMENT_IDS=$(wp comment list --status=trash --format=ids --path="$WP_PATH" 2>/dev/null || true)
if [ -n "$SPAM_IDS" ]; then
wp comment delete $SPAM_IDS --force --path="$WP_PATH" 2>/dev/null || true
fi
if [ -n "$TRASH_COMMENT_IDS" ]; then
wp comment delete $TRASH_COMMENT_IDS --force --path="$WP_PATH" 2>/dev/null || true
fi
echo " Spam y papelera de comentarios limpiada"
echo ""
echo "Paso 4/5 - Eliminando posts en papelera..."
TRASH_POST_IDS=$(wp post list --post_status=trash --format=ids --path="$WP_PATH" 2>/dev/null || true)
if [ -n "$TRASH_POST_IDS" ]; then
wp post delete $TRASH_POST_IDS --force --path="$WP_PATH" 2>/dev/null || true
else
echo " Sin posts en papelera"
fi
echo ""
echo "Paso 5/5 - Optimizando tablas de la base de datos..."
wp db optimize --path="$WP_PATH"
echo ""
echo "Estado de la base de datos DESPUÉS de limpiar:"
wp db size --path="$WP_PATH" --tables
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Limpieza completada exitosamente"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
Prompt para Codex
TEXT
Crea un script Bash para limpiar y optimizar una base de datos WordPress usando WP-CLI.
Pasos que debe ejecutar en orden:
1. Verificar que WP-CLI está instalado (si no, mostrar error y salir)
2. Verificar que existe una instalación WordPress válida en el path
3. Mostrar el tamaño de la base de datos ANTES con `wp db size --tables`
4. Eliminar transients expirados con `wp transient delete --all --expired`
5. Eliminar todas las revisiones de posts listándolas primero con wp post list --post_type=revision --format=ids
6. Eliminar comentarios spam y en papelera (wp comment list con --status=spam y --status=trash)
7. Eliminar posts en papelera (wp post list --post_status=trash)
8. Optimizar todas las tablas con `wp db optimize`
9. Mostrar el tamaño de la base de datos DESPUÉS
Características:
- Acepta el path de WordPress como primer argumento (default: directorio actual)
- Usa `set -e` para salir ante errores
- Muestra progreso con emojis y separadores
- Usa `2>/dev/null || true` para evitar errores cuando no hay elementos que borrar
- Muestra timestamp al inicio
Salida: script Bash completo listo para ejecutar con ./wp-cleanup.sh