WordPress - проблема при отображении сообщений с помощью запроса произвольного выбора - PullRequest
0 голосов
/ 07 апреля 2010

Мне нужно отобразить некоторые сообщения, используя пользовательский запрос выбора. Этот пользовательский запрос выбора должен получать сообщения в двух таксономиях.

Смотрите запрос:

SELECT *
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID =
$wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy
ON($wpdb->term_relationships.term_taxonomy_id =
$wpdb->term_taxonomy.term_taxonomy_id)
LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id =
$wpdb->terms.term_id)
WHERE
$wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->term_taxonomy.taxonomy = 'continentes'
AND $wpdb->terms.slug = 'asia'
AND $wpdb->term_taxonomy.taxonomy = 'pais'
AND $wpdb->terms.slug = 'china'
ORDER BY $wpdb->posts.post_date DESC

Если используется только одно условие, запрос работает хорошо, например:

... И $ wpdb-> term_taxonomy.taxonomy = 'continentes' И $ wpdb-> Terms.slug = 'Азия' ...

Но мне нужны посты в таксономии "continentes" и "pais".

С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

Предполагая, что каждое сообщение имеет только 1 таксономию, ваш запрос не даст никаких результатов, так как сообщение не может быть как на континентах, так и в Pais. вам нужно изменить положение where, чтобы оно выглядело так:

AND ($wpdb->term_taxonomy.taxonomy = 'continentes' OR $wpdb->term_taxonomy.taxonomy = 'pais')
0 голосов
/ 07 апреля 2010
...
AND 
($wpdb->term_taxonomy.taxonomy = 'continentes' 
OR 
$wpdb->term_taxonomy.taxonomy = 'pais')
...

Если Wordpress поддерживает это, вы можете использовать IN:

...
AND $wpdb->term_taxonomy.taxonomy in ('continentes', 'pais')
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...