Una de las cosas que más me chirrían de WordPress es la manía de muchos plugins de meter líneas de información en la base de datos, en concreto en la tabla ‘wp_options‘, que a poco que instales y desinstales plugins, se va llenando de porquería, muy al estilo de lo que pasa con el registro de Windows.
Por supuesto, es una mala costumbre, no de WordPress, sino de algunos desarrolladores que, pudiendo crear sus propias tablas, prefieren introducir la información del plugin en la tabla ‘wp_options‘. Y esto, además, no sería un problema si introdujeran una línea de código para limpiar la base de datos de su información al desinstalar el plugin, algo que si hacen algunos programadores.
Pero bueno, si tu base de datos crece y crece en tamaño, y no es por nuevas tablas ni por el crecimiento normal de las tablas wp_posts
o wp_comments
, es muy probable que sea precisamente la tabla wp_options
que ha ido creciendo por plugins con esta fea costumbre.
¿Limpiarlo?, pues bueno, puedes hacerlo manualmente, si conoces las entradas de una instalación estándar de WordPress, pero es una absoluta barbaridad y te puede llevar muchas horas que seguramente prefieras emplear para otras cosas.
Lo mejor es valerte de alguna de estas soluciones:
1. WP-Options manager
Este plugin ofrece un navegador que te permite identificar las entradas en la tabla ‘wp_options‘ de tu base de datos e ir borrándolas selectivamente. Lo que le diferencia de hacer lo mismo desde PHPmyAdmin es que nos ofrece ocultar las entradas por defecto de WordPress, haciendo esta tarea mucho más segura.
Otra funcionalidad interesante es buscar opciones obsoletas, para empezar el borrado por ahí.
Muy recomendable pero hay que usarlo con precaución, como siempre que haces algo directamente con la base de datos, como es el caso.
2. Clean options
Una de las mayores virtudes de este plugin es que detecta opciones obsoletas, e identifica las muy pesadas y habituales entradas de RSS antiguas, que suelen llenar toda tabla ‘wp_options‘.
También es de agradecer que antes del borrado definitivo nos ofrezca una pantalla en la que nos avisa y recuerda todo lo que se va a borrar, para dar el último suspiro antes de hacer el borrado.
3. Eliminar los _transient
Las entradas del tipo ‘_transient‘ son una especie de referencias a cache y los accesos RSS que antes comentaba. Si es tu cáncer particular puedes automatizar el borrado de estas molestas y pesadas entradas en tu tabla wp_options
de WordPress añadiendo este código al fichero functions.php
o plugin de funciones:
add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' ); function delete_expired_db_transients() { global $wpdb, $_wp_using_ext_object_cache; if( $_wp_using_ext_object_cache ) return; $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ; $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" ); foreach( $expired as $transient ) { $key = str_replace('_transient_timeout_', '', $transient); delete_transient($key); } }
Pues bien, esto es lo que hay. Y te recuerdo que siempre, siempre, haz backup de tu base de datos antes de liarla parda con estas cosas, para que no te tengas que arrepentir.
Y si con estos plugins no te llega, siempre puedes dejar la tabla ‘wp_options‘ al estado inicial de la instalación de WordPress con estos sencillos pero radicales pasos:
- Ve a ‘Herramientas -> Exportar’ y exporta todo el contenido
- Ve a PHPmyAdmin y borra todas las entradas de la tabla ‘wp_options‘
- Ve a ‘miweb.com/wp-admin/install.php’ y actualiza la base de datos
- Ve a ‘Herramientas -> Importar’ e importa el contenido antes exportado
Para todo lo demás, usa cuantos menos plugins mejor, y si tienen alguna función de limpieza tras la desinstalación mucho mejor.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
muy buena yo los otros dia tuve que espesar desde 0 con mi sitio web por que me hicieron ataques de DooS y se quedaron algunos sombiz que hacia que consumiera muchooo recurso del server y en el pro-sexo de limpieza tuve que hacer eso que usted ahora escribe pero a mano
Muy buenos ´plugins y consejos Fernando.
En estos días he estado considerando limpiar la tabla wp_options de mi sitio. Pues tal y como lo comentas, en el camino de ser blogger, uno suele utilizar (probar) una gran cantidad de plugins.
Acumulando así mucha información basura dentro de su base de datos. Es entonces, que de cuando en cuando se hace necesario utilizar plugins y consejos como estos para limpiar la table wp_options.
Muy buen artículo Fernando, yo la verdad es que una vez probé uno de estos plugins, no recuerdo si es alguno de los que nombras y me dio un poco de miedo.
La verdad es que la mayoría de las veces me he recorrido la tabla a mano y sin problemas se distingue la mayoría de las veces, normalmente los nombres de la opción son significativos y otra también puedes copiar el nombre de la opción en google y suele aparecer la página del repositorio de wordpress del plugin y ya sabes cual es. No obstante cuando tenga tiempo probaré alguno de los dos que comentas.
Más plugins deberían de borrar su información al desinstalarse.
También me ha ocurrido algo extraño a veces con Lightbox plus o con wp-supercache, y es que a veces al desactivarlos y volver a activarlos han perdido las opciones. Cogí la copia de seguridad de la BD y restauré esa linea concreta. Creo que tampoco hay que tener miedo a tocar la BD pero sí cuidado, a mi me ha resuelto problemas muchas veces.
¿Si te metes en install.php en un estado normal imagino que sirve como para revisar las tablas y si falta algo lo pone no?
Muchas gracias por el artículo.
¿Y para las líneas que mete jetpack? ¿Sabes si hay alguna solución?
Son del estilo "jetpack_nonce_xxxxxxxxx_xxxxxxxxxxxxxxxx
Puedes usar una consulta SQL con la condicion WHERE option_name LIKE '%jetpack_nonce_%'.
Eso sí, no se si esto se debe borrar o no, te estoy dando la forma rápida para borrar pero no diciendo que lo borres 😉
Gracias por responder, Juan. Aún estoy intentando comprobar cuál es la utilidad de esas líneas y si se pueden borrar.
tengo algún riesgo de eliminar lineas que sean útiles y que deje de funcionar con el clean option o el otro plugin?
Muy bueno! gracias Fernando
Hay algun otro plugin que este actualizada que sirva para realizar lo que mencionas ? o no habria problemas de usarlos
Hola Fernando, Gracias por tus recomendaciones y ayuda. ¿Conoces algún plugin más moderno que estos dos? Ninguno de los dos se ha actualizado en los últimos dos años. ¿Siguen siendo seguros?
Una duda con el código para el plugin de funciones, si la tabla wp_options tiene la tabla cambiada a xxxxxxx_options, ¿hay que cambiar algo en el código?
Nosotros tenemos un WordPress con WooCommerce, y esta tabla ocupa 572mb, con todos los plugins de limpieza pasados y a través de PhpyMyAdmin no logramos bajar el peso. No hay borradores, y hemos borrado plugins desactivados y demás basura… ¿Alguna idea? ¡Muchas gracias!
¿Qué tablas son las que más pesan y cuánto cada una?