WordPress: Actualizar contadores de tags y comentarios

Hace poco hice borrón y cuenta nueva con el wordpress (2 años de upgrades ya me parecían muchos) e importe todo el contenido del blog sobre una instalación limpia de WP 2.7 (en realidad sobre la RC1). Hacer esto me sirvió para limpiar la base de datos de rastros que hubiesen dejado viejos plugins pero también me dió algunos problemas:

  • Errores 404 sobre algunos archivos, en particulas las miniaturas de las imágenes (con el tiempo ha cambiado la forma de llamarlas) y con algunos archivos de texto para descargar que no se importaron. Nada que no solucione un FTP y un mucho de atención al revisar los logs del servidor.
  • No se actualizaron los contadores de comentarios y de etiquetas.

Desde la versión 2.3 y posteriores de WP existen 3 tablas de taxonomía que relacionan los posts con sus categorías y etiquetas, y entre otras cosas tienen algunos campos de contadores que facilitan el trabajo a la nube de etiquetas y otras funciones que utilizan el número para decidir. El caso es que después de la migración todos quedaron a cero.

Los querys que hay que hacer directamente sobre el SQL de la base de datos para recuperar el contador de comentarios de los post son los siguientes:
[sql]update wp_posts set comment_count = 0;
create temporary table comment_count select wp_posts.id, count(wp_comments.comment_id) as comment_count from wp_comments left join wp_posts on wp_comments.comment_post_id = wp_posts.id group by (wp_posts.id);
select * from comment_count;
update wp_posts join comment_count set wp_posts.comment_count = comment_count.comment_count where wp_posts.id = comment_count.id;
drop table comment_count;[/sql]

Para el caso de las etiquetas en similar, aunque acotando las actualizaciones a que sean etiquetas y contando sólo los comentarios en los post publicados (las revisiones también tienen sus asignaciones de tags):
[sql]update wp_term_taxonomy set count = 0
where taxonomy = ‘post_tag’;[/sql]

[sql]create temporary table tag_count
select wp_term_relationships.term_taxonomy_id as term_taxonomy_id, count(object_id) as tag_count
from wp_term_relationships, wp_posts
where wp_posts.post_type = ‘post’ and
wp_posts.id = wp_term_relationships.object_id
group by wp_term_relationships.term_taxonomy_id;[sql]

[sql]select * from tag_count;[/sql]

[sql]update wp_term_taxonomy join tag_count
set wp_term_taxonomy.count = tag_count.tag_count
where wp_term_taxonomy.term_taxonomy_id = tag_count.term_taxonomy_id
and wp_term_taxonomy.taxonomy = ‘post_tag’;[/sql]

[sql]drop table tag_count;[/sql]

Actualizar la base de datos vía query puede resultar peligroso si te equivocas, así que asegúrate bien (y preferiblemente haz un backup) antes de ejecutar nada.

Anuncios

8 comentarios en “WordPress: Actualizar contadores de tags y comentarios

  1. Pingback: Bitacoras.com
  2. Muchas gracias!!!
    tenía exactamente el mismo problema, pero a diferencia tuya, no sabia como resolverlo…hasta tu post.
    Solo he tenido que aprender a hacer un query a la base de datos y problema solucionado 🙂
    lo dicho..gracias!

    • Me alegro de que te sirva, a mi me costó un buen rato entender cómo funcionaba la estructura de las tablas term___ de wordpress, así que pensé que seguro que a alguien más le había pasado lo mismo

  3. Hola! Pues a mí me pasa lo mismo, pero aún estoy un nivel más abajo de Truman ¿cómo leches hago un query de la base de datos?

    He estado buscando, y me he enterado de muchas cosas sobre los query, pero no he sabido encontrar cómo hacerlo.

    Si podéis ayudarme…

    Gracias

    • necesitas acceder al mysql, generalmente con el phpmyadmin, si tienes el blog alojado en un hosting posiblemente ellos te faciliten la manera desde el panel de administración del hosting. Una vez allí tienes que andar con cuidado porque si haces algo mal es fácil cargarse algo en la base de datos. Cuando tengas acceso si quieres vuelve a preguntarme

  4. Ha funcionado perfectamente!!!

    Muchas gracias por tu ayuda, ya sabes donde encontrarme si alguna vez necesitas un mecanicucho…jeje

    Saludos

Los comentarios están cerrados.