Buduję sekcję w witrynie, w której łączę dwa różne typy postów w jedną pętlę, a następnie wyświetlam je losowo. Problem polega na tym, że trudno mi znaleźć sposób na ograniczenie liczby postów według typu.
Oto, co próbowałem:
Jedno zapytanie z wieloma typami postów można uzyskać za pomocą tablicy:
$args = array( 'post_type' => array( 'photos', 'quotes' ), ...
... ale nie może ograniczać się do określonej liczby postów według typu.
Scalenie dwóch tablic argumentów zapytania przed uruchomieniem na nim WP_Query :
$photos = array( 'post_type' => 'photos', 'posts_per_page' => 15, 'orderby' => 'rand' ); $quotes = array( 'post_type' => 'quotes', 'posts_per_page' => 5, 'orderby' => 'rand' ); $args = $photos + $quotes; // Also tried array_merge( $photos, $quotes );
Nie ma w tym szczęścia. Ta ostatnia zmienna
$quotes
zastępuje$photos
i pokazuje tylko cudzysłowy.Scalanie dwóch obiektów WP_Query razem poprzez rzutowanie czcionek :
$photos_query = new WP_Query( $photos ); $quotes_query = new WP_Query( $quotes ); $result = (object)array_merge( (array)$photos_query, (array)$quotes_query );
... i tak dalej.
Pewnie przydałby zapytanie SQL prosto do bazy danych, ale muszą być w stanie połączyć te dwa odrębne rodzaje pocztowych dla jednej pętli, ułożone losowo, i ogranicza się do pewnej ilości postów typu.
Dzięki za pomoc!
źródło
UNION
jakiegoś rodzaju w sql dla każdego typu post_?@mridual aggarwal twoja odpowiedź jest bardzo bardzo dobra, ale niestety tak naprawdę nie łączy 2
wp_query
, pokazuje tylko posty z obu w ustawieniu, mam na myśli 5 postów z pierwszego i 5 z drugiego, ale nie posortowane w jednym, więc mam to rozwiązanie i przynajmniej dokładnie osiągnęło cel dla siebieźródło