Запрос нескольких таксономий - PullRequest
1 голос
/ 07 июля 2010

Я изменяю плагин wordpress (Related Posts by Category), чтобы сделать его вместо "Related Posts by Taxonomy". Я создал несколько таксономий (элементов, цветов и настроений), которые я хотел бы включить в этот запрос, но, похоже, он работает только с одной таксономией (элементами). Код ниже возвращает только связанные посты, которые имеют одинаковые «элементы». Что я делаю неправильно? Мне бы хотелось, чтобы код возвращал сообщения, которые соответствуют одной, обоим или всем таксономиям, а не только элементам.

$posts = $GLOBALS['wpdb']->get_results(
sprintf(
"SELECT DISTINCT object_id as ID, post_title 
FROM {$GLOBALS['wpdb']->term_relationships} r, {$GLOBALS['wpdb']->term_taxonomy} t, {$GLOBALS['wpdb']->posts} p 
WHERE t.term_id IN (SELECT t.term_id FROM {$GLOBALS['wpdb']->term_relationships} r, {$GLOBALS['wpdb']->term_taxonomy} t 
WHERE r.term_taxonomy_id = t.term_taxonomy_id 
AND t.taxonomy = 'elements' 
AND r.object_id = $id) 
AND r.term_taxonomy_id = t.term_taxonomy_id 
AND p.post_status = 'publish' 
AND p.ID = r.object_id 
AND object_id <> $id %s %s %s",
($type ? ("AND p.post_type = '" .$type. "'") : ''),
($orderby ? ('ORDER BY ' .(strtoupper($params['orderby']) == 'RAND' ? 'RAND()' : $orderby. ' ' .$order)) : ''),
($limit ? ('LIMIT ' .$limit) : '')
)

1 Ответ

1 голос
/ 07 июля 2010

Попробуйте изменить AND t.taxonomy = 'elements' на;

AND t.taxonomy IN ('elements', 'mood', 'colors')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...