it-swarm-es.com

¿Cómo puedo eliminar las claves huérfanas en las tablas de base de datos de WordPress?

En particular en la tabla wp_options. Después de casi 2 años de producción de blogs, parece que ha aumentado mucho, y no sé cuánta basura hay allí.

¿Conoce un complemento que funcione con WordPress 3.0 o una consulta segura para ejecutar y buscar claves/filas huérfanas?

10
Drake

No hay ninguna consulta que sea 100% segura de eliminar todo lo que no se use y no eliminar esas cosas porque cualquier tema o complemento puede agregar opciones a la tabla wp_options. Sin embargo, con un poco de esfuerzo, puede obtener una idea bastante buena de lo que no está en uso y luego decidir manualmente cuáles de esas cosas eliminar y cuáles no.

Puede colocar el siguiente código temporalmente en el archivo functions.php de su tema y luego visitar cada página (tipo de) en su sitio público y, lo que es más importante, todas las páginas de administración en la consola de administración. Una vez que hayas hecho eso, puedes abrir tu tabla wp_options y mirar el campo use_count (añadido por el código a continuación) para ver qué opciones tienen un use_count igual a cero (el recuento de uso no tiene ningún significado más que nada mayor que 1 leído o actualizado al menos una vez desde que agregó este código.)

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

Con esto, probablemente podrá identificar las opciones que están asociadas con los complementos obsoletos, los temas anteriores e incluso las opciones propias que agregó antes pero que ya no usa. Exportarlos todos a una copia de seguridad (por si acaso) y luego elimine los que se sientan cómodos eliminando. Una vez que haya terminado, puede eliminar el campo use_count (si lo desea, no le duele que esté allí) y también eliminar el código anterior de su archivo functions.php también.

Aunque esto todavía no es perfecto, es mucho mejor que nada. ¿Espero eso ayude?

7
MikeSchinkel

El plugin Opciones de limpieza ha funcionado bien para mí. La descripción del autor del complemento parece ajustarse a lo que usted necesita: "Encuentra opciones huérfanas y permite su eliminación de la tabla wp_options".

No he probado WP-Optimize sin embargo personalmente, pero ese también parece prometedor. Y dice que es compatible con WP 2.7 (mientras que las Opciones de limpieza solo mencionan el soporte definido para WP 2.3), ¡Niza!

4
Mike Lee

Esto no necesariamente eliminará los problemas con wp_options, pero he usado WP-Optimize para solucionar muchos problemas de tamaño de base de datos en mis sitios 3.0. Elimina revisiones de publicaciones innecesarias, comentarios de spam y puede solucionar muchos problemas automáticamente. En mi blog principal, la base de datos se redujo de 30 MB a poco menos de 6 MB y ahora funciona mucho mejor.

2
EAMann

Ejecuto tanto Clean Options como WP_Optimize en mi sitio, y el combo hace un trabajo excelente para mantener la base de datos en perfecto estado.

1
Keith S.