2011-12-19 4 views
0

Я сделал этот запрос, чтобы выбрать сообщения из блога блога WordPress по категориям, тегам и пользовательским полям.фильтрация запросов Wordpress по пользовательскому полю, тегу и категории

SELECT wp_posts.* 
FROM wp_posts 
WHERE wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' 

AND  (  SELECT COUNT(*) 
       FROM wp_term_relationships 
       LEFT JOIN wp_term_taxonomy ON (wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id) 
       LEFT JOIN wp_terms ON (wp_term_taxonomy.term_id = wp_terms.term_id) 
       WHERE wp_posts.ID = wp_term_relationships.object_id 
       AND  (wp_terms.name = 'collaborazioni' && wp_term_taxonomy.taxonomy = 'category') 
         || 
         (wp_terms.name = 'jammin' && wp_term_taxonomy.taxonomy = 'post_tag') 
      ) >= 1 

AND  (  SELECT COUNT(*) FROM wp_postmeta 
       WHERE wp_postmeta.post_id = wp_posts.ID 
       AND wp_postmeta.meta_key = 'Product-code' 
       AND wp_postmeta.meta_value = 'xxxxxx' 
       ) >= 1 

, но я думаю, что это немного тяжелый .. у вас есть лучшее решение?

спасибо, Пьетро.

ответ

0

Что именно вы хотели бы сократить? Он уже выглядит довольно неплохо.

PS. Возможно, вы захотите использовать {$wpdb->prefix} вместо wp_ в запросах.

+0

Я точно не знаю, что должно быть короче, я спрашиваю, есть ли лучший способ сделать это. Во всяком случае, я буду использовать префикс $ wpdb->, спасибо;) – pietrosld

+0

Тогда нет, вы сделали там максимальное сокращение. И префикс $ wpdb-> - это то, что я использую во всех сценариях, которые могут выполняться внутри установки Wordpress, где префикс не является значением по умолчанию wp_. Полезная мелочь. –

Смежные вопросы