2015-03-16 4 views
0

LOOP:Wordpress - сообщения Фильтра по несколько мете ключей с одинаковым значением

<?php 
$meta[] = array(
    'key' => 'myfield1111', 
    'value' => 'myvalue', //same value, it exists in this field 
    'compare' => 'LIKE' 
); 
$meta[] = array(
    'key' => 'myfield2222', 
    'value' => 'myvalue', //same value, id doesn't exists in this filed 
    'compare' => 'LIKE' 
); 

$loop = new WP_Query(
    array(
     'post_type' => 'myposttype', 
     'posts_per_page' => 24, 
     'paged' => $paged, 
     'meta_query' => array(
     'relation' => 'OR', 
     $meta 
    ), 
)); 
?> 

Результаты этого пустой запрос (нет записей возвращаются), даже если значение myvalue выходит в ключевых myfield1111. Это нелогично для меня, так как я использовал OR отношение к мета-запросу.

Почему это происходит, и как я могу его решить?

ответ

0

Решенный!

<?php 
$querystr = " 
    SELECT $wpdb->posts.* 
    FROM $wpdb->posts, $wpdb->postmeta 
    WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
    AND ($wpdb->postmeta.meta_key = 'myfield1111' AND $wpdb->postmeta.meta_value LIKE '%myvalue%') 
    OR ($wpdb->postmeta.meta_key = 'myfield2222' AND $wpdb->postmeta.meta_value LIKE '%myvalue%') 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'myposttype' 
    AND $wpdb->posts.post_date < NOW() 
    ORDER BY $wpdb->posts.post_date DESC 
"; 

$pageposts = $wpdb->get_results($querystr, OBJECT);    
?> 
Смежные вопросы