Je crée une section sur un site où je fusionne deux types de messages différents en une seule boucle, puis les affiche au hasard. Le problème est que j'ai du mal à trouver un moyen de limiter la quantité de messages par type.
Voici ce que j'ai essayé:
Une requête avec plusieurs types de publication peut être réalisée avec un tableau:
$args = array( 'post_type' => array( 'photos', 'quotes' ), ...
... mais ne peut se limiter à un certain nombre de publications par type.
Fusion de deux tableaux d'arguments de requête avant d'exécuter WP_Query dessus:
$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 );
Pas de chance là-dessus. Ce qui se passe, c'est que cette dernière variable
$quotes
écrase$photos
et n'affiche que les guillemets.Fusion de deux objets WP_Query ensemble par le transtypage:
$photos_query = new WP_Query( $photos ); $quotes_query = new WP_Query( $quotes ); $result = (object)array_merge( (array)$photos_query, (array)$quotes_query );
... etc.
Je pourrais probablement utiliser une requête SQL directement dans la base de données, mais je dois pouvoir combiner ces deux types de messages séparés pour une boucle, disposés de manière aléatoire ET limités à une certaine quantité de messages par type.
Merci de votre aide!
la source
UNION
sorte de code dans le sql pour chaque post_type?@mridual aggarwal votre réponse est très très bonne mais malheureusement, elle ne combine pas vraiment les 2,
wp_query
elle ne montre que les messages des deux en ordre, je veux dire 5 messages du premier et 5 du second mais pas triés tout en un, donc j'ai ceci solution et il a exactement atteint l'objectif pour moi au moinsla source