J'essaie de créer un post connexe WP_Query. Jusqu'à présent, j'ai créé un WP_Query personnalisé qui interroge toutes les publications qui correspondent à un tableau de balises.
Cependant, j'essaie de créer un simple if statement
: si le nombre de messages récupérés est de moins de 10 , récupérez le reste de ailleurs (cela pourrait être d'une catégorie particulière).
J'ai la boucle suivante. Il utilise $related_posts->found_posts
pour obtenir le nombre de messages.
$related_posts_args =
array(
'tag__and' => $list_of_tags, // array of tag IDS
'posts_per_page' => 10,
'post__not_in' => $already_posted, // array of post IDs
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'orderby' => 'Rand',
);
$related_posts_query = new WP_Query( $related_posts_args );
if ( $related_posts_query->have_posts() ):
while ( $related_posts_query->have_posts() ):
$related_posts_query->the_post();
// this is the number of posts in my current query
echo $related_posts_query->found_posts;
the_title();
endwhile;
endif;
wp_reset_postdata();
Est-ce que quelqu'un sait comment utiliser le reste pour obtenir des messages d'ailleurs? (Et est possible dans la même boucle).
Vous pourriez faire quelque chose comme:
$related_posts_query = new WP_Query( $related_posts_args );
if( $related_posts_query->found_posts < 10 ){
$args = array(/* new wp_query args*/);
$newquery = new WP_Query( $args );
}
# merge the two results
$related_posts_query->posts = array_merge( $related_posts_query->posts, $newquery->posts );
$related_posts_query->post_count = count( $related_posts_query->posts );
# do your loop here
La meilleure approche à l’OMI consiste à compter le nombre de publications renvoyées par page par rapport à l’option set posts_per_page
définie dans votre requête. Si le nombre est inférieur à l'ensemble posts_per_page
, calculez la différence, puis utilisez-la comme quantité de messages pour remplir le reste dans une requête personnalisée.
Commencez par compter le nombre de messages renvoyés par votre requête "principale". Dans ce cas, ce sera $related_posts_args->posts
count($related_posts_args->posts)
Comme vous avez défini votre posts_per_page
sur 10
, ce sera le numéro avec lequel vérifier le compte.
count($related_posts_args->posts) < 10
Si le nombre est inférieur à 10, vous devez obtenir la différence entre 10 et le nombre. Cette différence sera l'option posts_per_page
pour votre requête personnalisée
$ppp = 10 - count($related_posts_args->posts);
Vous pouvez maintenant exécuter votre requête personnalisée pour récupérer les publications afin de remplir les espaces vides. Vous aurez juste besoin d'ajouter vos propres arguments de requête
Voici le code complet
if( count($related_posts_args->posts) < 10 ) {
$ppp = 10 - count($related_posts_args->posts);
$args = [ //Add your own query arguments to suite your needs
'orderby' => 'Rand',
'posts_per_page' => $ppp
];
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
//Display your loop elements
}
wp_reset_postdata();
}
}
Avec votre code intégré
$related_posts_args = [
'tag__and' => $list_of_tags, // array of tag IDS
'posts_per_page' => 10,
'post__not_in' => $already_posted, // array of post IDs
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'orderby' => 'Rand',
];
$related_posts_query = new WP_Query( $related_posts_args );
if ( $related_posts_query->have_posts() ) {
while ( $related_posts_query->have_posts() ) {
$related_posts_query->the_post();
//Display your loop elements
}
wp_reset_postdata();
if( count($related_posts_args->posts) < 10 ) {
$ppp = 10 - count($related_posts_args->posts);
$args = [ //Add your own query arguments to suite your needs
'orderby' => 'Rand',
'posts_per_page' => $ppp
];
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
//Display your loop elements
}
wp_reset_postdata();
}
}
}