глюк в term_taxonomy – помогите кто сталкивался пожалуйста.

WP 2.3.3 (Lecactus ed.) на хостинге ht-systems

периодически происходит "рассинхронизация" между столбцами term_taxonomy_id и term_id – при создании новой категории. term_id для неё вдруг становится на единицу меньше чем term_taxonomy_id и все последующие тоже.

У меня здесь общий вопрос даже (на офсайте мало данных по теме) – эти столбцы должны быть одинаковы? я правильно понял? а коли так – зачем их два? 🙂

В общем помогите разобраться плиз. Спасибо.

Ну коли их два, то резонно предположить, что значения в них могут отличаться, не правда ли? Вообще-то, таксономия в WP – самая мутная вещь, видимо, из-за своей молодости.

PS Не сломалось – не чини. 😉

PS Не сломалось - не чини. ;)

для меня это не просто абстракция. у меня из-за этого глюка перестала работать выборка случайного поста из определенной категории. пару часов угрохал пока разобрался в чем дело :/

вот и интересуюсь – может кто еще сталкивался с этим?

Видимо, Вы изначально ошиблись, предположив, что эти поля одинаковы всегда, и потеряли одну реляцию.
Должно быть что-то типа
SELECT $wpdb->posts.* FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = ‘category’ AND $wpdb->term_taxonomy.term_id = ‘$cat’ AND post_type = ‘post’ AND post_status = ‘publish’

Видимо, Вы изначально ошиблись, предположив, что эти поля одинаковы всегда, и потеряли одну реляцию.
Должно быть что-то типа 
SELECT $wpdb->posts.* FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = '$cat' AND post_type = 'post' AND post_status = 'publish'

у меня вот какое:

"SELECT post_title, post_content 
FROM $wpdb->posts,$wpdb->terms,$wpdb->term_relationships 
WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id 
AND $wpdb->terms.term_id = $wpdb->term_relationships.term_taxonomy_id 
AND $wpdb->posts.post_status = 'publish' 
AND $wpdb->terms.name = 'Блоги-участники.' 
ORDER BY RAND() LIMIT 1"

честно-говоря, это первый SQL-запрос с которым я имел дело за последние пару-тройку лет 🙂 и если совсем уж честно – я просто содрал его с подобного из какого-то топика в этом форуме )) просто делал все на бессонном драйве – неохота было заморачиваться на разбор структуры базы и т.п. – скопировал – работает – гут ) а сейчас вот чего вышло…

Запросы лучше драть не из форума, а из самого движка. 🙂

Anonymous
Отправить
Ответ на: