Mam niestandardowy typ post „nieruchomość” i chcę uzyskać wszystkie aukcje, które pola niestandardowego gateway_value != 'Yes'
, a obciążenie wyniki według innego pola niestandardowego location_level1_value
. Mogę sprawić, by zapytania działały osobno, ale nie mogę ich łączyć:
Zapytanie 1 (sortuj według lokalizacji):
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'post_status' => 'publish',
'posts_per_page' => '9',
'meta_key' => 'location_level1_value',
'orderby' => 'location_level1_value',
'order' => 'ASC',
'paged' => $paged
)
);
Zapytanie 2 (wartość pola niestandardowego! = Tak):
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'posts_per_page' => '9',
'post_status' => 'publish',
'meta_key' => 'gateway_value',
'meta_value' => 'Yes',
'meta_compare' => '!=',
'paged' => $paged
)
);
Połączone zapytanie:
Spojrzałem na kodeks, aby uzyskać pomoc, ale następujące zapytanie nie działa:
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'posts_per_page' => '9',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'gateway_value',
'value' => 'Yes',
'compare' => '!='
),
array(
'key' => 'location_level1_value'
)
),
'orderby' => "location_level1_value",
'order' => 'ASC',
'paged' => $paged
)
);
Co robię źle z połączonym zapytaniem?
[AKTUALIZACJA]: Więc teraz, gdy wersja 3.1 została wydana, powyższe połączone zapytanie nadal nie działa. Otrzymuję wyniki, po prostu niepoprawnie posortowane.
[AKTUALIZACJA]: var_dump($wp_query->request)
daje następujące informacje:
string(527) " SELECT SQL_CALC_FOUND_ROWS wp_7v1oev_posts.* FROM wp_7v1oev_posts
INNER JOIN wp_7v1oev_postmeta ON (wp_7v1oev_posts.ID = wp_7v1oev_postmeta.post_id)
INNER JOIN wp_7v1oev_postmeta AS mt1 ON (wp_7v1oev_posts.ID = mt1.post_id) WHERE 1=1 AND wp_7v1oev_posts.post_type = 'listing' AND (wp_7v1oev_posts.post_status = 'publish') AND wp_7v1oev_postmeta.meta_key = 'gateway_value' AND CAST(wp_7v1oev_postmeta.meta_value AS CHAR) != 'Yes' AND mt1.meta_key = 'location_level1_value' ORDER BY wp_7v1oev_posts.post_date DESC LIMIT 0, 9"
źródło
meta_query
Parametr jest nowego w 3.1, ukaże się wkrótce, ale obecna wersja 3.0.5 jest nadal stabilny, bez tego parametru.Odpowiedzi:
Możesz użyć zapytania, aby przefiltrować zawartość zgodnie z oczekiwaniami, używając „meta_query” z opcjami filtrowania, a dla części zamówienia wystarczy dodać / zmodyfikować następujące parametry:
„zamówienie” => „ASC”
źródło
Tak jak Jan powiedział w nowym WordPress 3.1, którego możesz używać,
meta_query
ale dopóki to nie wyjdzie, możesz użyć swojego pierwszego zapytania, aby uporządkować i filtrować wewnątrz pętli w następujący sposób:i dodaj ten kod do swojego functions.php
teraz to powinno działać.
źródło
gateway_value == "Yes"
byłyby bez warunkowego ... Masz pomysł, jak to naprawić?Przepraszamy za odpowiedź na moje pytanie:
Patrząc na [http://core.trac.wordpress.org/ticket/15031][1], wydaje się, że jest to znany problem. Naprawiłem (zhakowałem?), Aby działał, korzystając z tego
post_filter
, tak (tylko dla odniesienia każdego, kto może szukać tej samej odpowiedzi):W functions.php ###
Zmieniono wp_query w pliku szablonu ###
źródło