Tras la actualización de WordPress a la versión 2.3. mucha gente está experimentando problemas con la tabla wp_posts2cat
, y he recibido muchos mails pidiendome ayuda sobre el problema. Así que he pensado en publicar la solución que he encontrado.
Hay que tener en cuenta que la tabla wp_posts2cat
y wp_categories
han dejado de existir en la versión 2.3 dejando paso a la nueva estructura taxonómica. Así que como consejo antes de actualizar:
REVISA QUE LOS PLUGINS QUE TIENES O QUIERES, ESTAN ACTUALIZADOS Y SON COMPATIBLES CON LA VERSIÓN NUEVA
Problema
WordPress database error: [Table 'wp_post2cat' doesn't exist]
SELECT p2c.category_id AS cat_id, COUNT(p2c.rel_id) AS numposts,
UNIX_TIMESTAMP(max(posts.post_date_gmt)) + '8' AS last_post_date,
UNIX_TIMESTAMP(max(posts.post_date_gmt)) AS last_post_date_gmt FROM
wp_post2cat p2c INNER JOIN wp_posts posts ON p2c.post_id=posts.id WHERE
1 = 1 AND posts.post_type = 'post' AND posts.post_status = 'publish'
AND posts.post_date_gmt <= '2007-09-19 12:08:25' GROUP BY
p2c.category_id ORDER BY numposts DESC
o
WordPress database error: [Table 'wordpress.wp_post2cat' doesn't exist]
SELECT c.cat_name FROM wp_post2cat p2c INNER JOIN wp_categories c ON p2c.category_id = c.cat_id WHERE p2c.post_id = 218
o
WordPress database error: [Table 'wordpress.wp_post2cat' doesn't exist]
SELECT cat_ID AS ID, MAX(post_modified) AS last_mod FROM wp_posts p
LEFT JOIN wp_post2cat pc ON p.ID = pc.post_id LEFT JOIN wp_categories c
ON pc.category_id = c.cat_ID WHERE post_status = 'publish' GROUP BY
cat_ID
Solución
Revisa la lista de plugins compatibles con la nueva versión, por que al parecer se está usando alguno que no está actualizado. Quizas ya hayan publicado una versión nueva corrigiendo este problema, si aún no ha sido actualizado, deberías desactivarlo cautelarmente hasta que se actualize el plugin.
Problema
Estás usando theme basado en K2.
Solución
Revisa los plugins que integra tu versión y evita los no actualizados o compatibles con la nueva versión. En el codex ya hay un hilo comentando el tema.
Problema
WordPress database error: [Table 'mainsite.wp_terms' doesn't exist]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt
ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON
tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN
('category') AND tr.object_id IN (171) ORDER BY t.name ASC
Solución
Forzar una actualización de la base de datos. Que consiste en decrementar en un el valor de db_version de la tabla wp_options
. Una vez decrementado, como hagamos login nos pedirá otro upgrade.
Para modificar el dato, usaremos phpmyadmin (o similar) o cambiar los valores directamente desde wp-admin/optinos.php
.
Podemos ver y modificar este resultado directamente desde nuestro SQL. En phpmyadmin, en la pestaña SQL.
//Actualizamos la versión a una inferior
UPDATE `wp_options` SET `option_value` = option_value - 1 WHERE `wp_options`.`option_name` = 'db_version' LIMIT 1 ;
Como podemos ver, decrementamos uno el valor que haya dentro de la tabla wp_options
. Revisar el prefijo de las tablas antes de ejecutar el update.
Una vez modificado este valor, ir a wp-admin/upgrade.php de tu WordPress.
Mis plugins
Solo he podido probar y funcionan correctamente los siguientes plugins, este finde, revisaré el resto.
- antiTroll
- GreyBox Plugin
- Mi PageRank Plugin
- Nube Comments
- Textarea Tools WordPress Plugins
- Thickbox Plugin
- EtiqueTags
- WP-Recomiendo
- MultiUploader 4 WordPress
- ImagesControlSize
Si alguien ha probado algún otro plugin y le funciona o no, me haría un favor increible si me avisará. Gracias
Actualización
Un problema que he visto, aunque había pasado desapercibido por que está un poco escondido, ha sido con el plugin myDashboard, que se encarga de modificar el aspecto de nuestro dashboard y convertirlo en una especie de netvibes. Debido a que está desarrollado a modo de gadgets, algunos de estos hay que actualizarlos para que se olviden de las tablas obsoletas.
Uno de ellos es el gadget de estadísticas, que muestra el número de posts, comentarios,… totales del blog, que al querer mostrar el número de categorías este da el famoso error. La solución es bastante simple.
Solución
Basta con editar el fichero default.php de la carpeta mydashboard/gadgets/ que estará en la carpeta wp-content/plugins/ de nuestro WordPress (siempre y cuando tengamos el plugin instalado). Reemplazamos la función mydash_display_blog_statistics()
(sobre la línea 366) por esta.
function mydash_display_blog_statistics($args = false) {
global $wpdb;
$mytitle = __('Blog Stats');
$numposts = (int) $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'");
$numcomms = (int) $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '1'");
$numcats = wp_count_terms('category');
$numtags = wp_count_terms('post_tag');
$post_str = sprintf(__ngettext('%1$s <a href="%2$s" title="Posts">post</a>', '%1$s <a href="%2$s" title="Posts">posts</a>', $numposts), number_format_i18n($numposts), 'edit.php');
$comm_str = sprintf(__ngettext('%1$s <a href="%2$s" title="Comments">comment</a>', '%1$s <a href="%2$s" title="Comments">comments</a>', $numcomms), number_format_i18n($numcomms), 'edit-comments.php');
$cat_str = sprintf(__ngettext('%1$s <a href="%2$s" title="Categories">category</a>', '%1$s <a href="%2$s" title="Categories">categories</a>', $numcats), number_format_i18n($numcats), 'categories.php');
$tag_str = sprintf(__ngettext('%1$s tag', '%1$s tags', $numtags), number_format_i18n($numtags));
$mycontent = '<p>' . sprintf(__('There are currently %1$s and %2$s, contained within %3$s and %4$s.'), $post_str, $comm_str, $cat_str, $tag_str) . '</p>';
return array('title' => $mytitle, 'content' => $mycontent);
}
Iré actualizando si veo algo nuevo.
56 comentarios, 27 referencias
+
#