2012-03-21 4 views
1

Im пытается написать запрос, который найдет и отобразит все мои сообщения, которые имеют одинаковые значения полей в качестве моего ввода.Query posts на основе пользовательского поля в wordpress

В WordPress У меня есть следующие ...

enter image description here

Мой запрос ...

$pageposts = $wpdb->get_results("SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_value = 'petrol' OR wpostmeta.meta_value = 'local' ORDER BY wpostmeta.meta_value DESC", OBJECT); 

Если удалить «OR wpostmeta.meta_value = 'локальный' Это работает правильно и вытаскивает правильный пост с настраиваемым значением поля как «бензин»

Может ли кто-нибудь дать мне представление о том, где я ошибаюсь? На данный момент его отображение все моих постов, даже те, которые являются проектами и были удалены, и его также перекручивание и отображение их много раз ...

ответ

1

Try:


SELECT wposts.* 
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta 
WHERE wposts.ID = wpostmeta.post_id 
AND (wpostmeta.meta_value = 'petrol' OR wpostmeta.meta_value = 'local') 
ORDER BY wpostmeta.meta_value DESC" 
+0

Ничего себе, это на самом деле сработало! только проблема заключается в том, что он вытягивает результаты более одного раза, как если бы его цикл для некоторых ... – Liam

+0

вы можете добавить GROUP BY post_id и увидеть результат, вы имели в виду что-то подобное ... –

+0

Его по-прежнему вытаскивают удаленные сообщения тоже ... – Liam

0

Фигурного это ...

<?php 
$customkey = 'Network'; // set to your custom key 
$customvalue = 'Local'; // set to custom value 

global $wpdb; 
$my_posts = $wpdb->get_results("SELECT * FROM $wpdb->posts, $wpdb->postmeta WHERE ID = $wpdb->postmeta.post_id AND meta_key = '$customkey' AND meta_value = '$customvalue' ORDER BY post_date DESC"); 

foreach ($my_posts as $post) : 
setup_postdata($post); 

echo '<div><a href="'; 
the_permalink(); 
echo '"></div>'; 
the_title(); 

endforeach; 
?> 
Смежные вопросы