WordPress : Deux requêtes avec WP_Query ajouter la seconde pour se terminer par la pagination

Publié par Jean-Michel le

Ce que j’essaie de faire est de créer deux requêtes pour les propriétés. On récupérera les résultats réguliers basés sur une requête normale. La deuxième requête récupérera les propriétés étroitement liées à la première requête. Je suis capable d’exécuter les deux requêtes et de récupérer tous les résultats avec posts_per_page défini sur illimité et sans pagination. Le problème lors de l’ajout de la pagination est que les deux boucles s’exécutent et affichent des publications sur chaque page.

La page aurait 3 de la première boucle suivie de 3 de la deuxième boucle.

J’ai essayé de fusionner les deux requêtes en une seule et de les montrer, mais les mêmes résultats se produisent. 3 et 3.

Je pense que je dois ajouter d’une manière ou d’une autre pour être sûr que la deuxième boucle est sortie après la première. Des pensées?

Voici mes boucles (j’ai exclu les arguments à cause de la longueur)

<?php
$queryOne = new WP_Query($args);
$queryTwo = new WP_Query($args2);
$results = new WP_Query();

$results->posts = array_merge($queryOne->posts, $queryTwo->posts);
?>

<?php foreach($results->posts as $post) : ?>
  <?php setup_postdata( $post ); ?>
  <?php get_template_part( 'property-listing' ); ?>

<?php endforeach; ?>

Solution n°1 trouvée

en fonction de parse_querycela, post_countvous devrez ajouter les deux post_counts. Dans votre exemple post_countn’est pas défini. Cela devrait fonctionner si vous remplissez le post_count. Ajoutez simplement ceci à la fin :

$results->post_count = $queryOne->post_count + $queryTwo->post_count;

Votre exemple complet :

<?php
  $queryOne = new WP_Query($args);
  $queryTwo = new WP_Query($args2);
  $results = new WP_Query();

  $results->posts = array_merge($queryOne->posts, $queryTwo->posts);
  $results->post_count = $queryOne->post_count + $queryTwo->post_count;

  foreach($results->posts as $post) :
     setup_postdata( $post );
     get_template_part( 'property-listing' );

  endforeach;
?>
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *