J'ai des problèmes pour commander une boucle! Je souhaite afficher les publications dans un style Compte à rebours (5, 4, 3, 2, 1), mais en utilisant des métadonnées et des données saisies par l'utilisateur.Compenser les postes et modifier une WP_query la bonne façon
J'ai ces données:
Post A with meta data (score = 2)
Post B with meta data (score = 4)
Post C with meta data (score = 6)
Post D with meta data (score = 8)
Post E with meta data (score = 10)
utilisateur Exemple veut afficher un top 3 compte à rebours, de sorte user_input $ = 3.
La page devraient alors: Post C, Post D, Post E . (commandé par meta score et montrant le meilleur score en dernier).
J'ai une boucle de wp_query comme si:
$args = array('meta_key' => 'score', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'posts_per_page' => $user_input);
$qry= new WP_Query($args);
$count_posts = $qry->post_count;
$offset = $count_post - $user_input
while ($qry->have_posts() ) : $qry->the_post();
// echo stuff
Il fonctionne, sauf que parce qu'il est réglé sur commande = ASC et les messages par page est maintenant fixé à 3 (quand il y a 5 postes de la catégorie) il montre le Post A, le Post B, le Post C. Et c'est ce dont j'ai besoin pour le montrer sauf qu'il devrait être C, D, E. J'ai pensé que je devais décaler le wp_query, mais je ne peux pas ajouter un 'offset' dans le tableau args parce que je ne sais pas combien de messages sont dans la catégorie. Je dois faire un post_count après la WP_Query et soustraire user_input pour savoir combien je dois compenser. C'est pourquoi j'ai mis le calcul pour $ offset.
Ma question est. Comment modifier la WP_query de la bonne façon? Est-ce qu'un
query_posts('offset'.$offset.'&showposts'.$user_input)
après le décalage est calculé une mauvaise façon de le faire parce qu'il fait une autre requête?
Est-il possible d'ajouter facilement un paramètre à wp_query après qu'il a déjà été défini?
Merci les gars
Essayez de changer votre argument ' « ordre »=> « ASC »,' avec ' 'ordre '=>' DESC ', '. – Rikesh
Cela montre les "3 meilleurs scores" mais ils se font écho dans le mauvais sens. J'ai besoin d'eux pour faire écho, C, D, E, DESC écho = E, D, C. – user1202292
Un quickfix serait réglé '' order '=>' DESC'' pour obtenir les 3 plus gros scores, puis utilisez * $ qry-> get_posts() * et * array_reverse() * le trier dans l'ordre que vous voulez. Par exemple. ' php array_reverse ($ qry-> get_posts()); ?> '. La seule différence dans la boucle est que vous bouclez normalement à travers les éléments comme un tableau et utilisez la fonction [setup_postdata()] (https://codex.wordpress.org/Function_Reference/setup_postdata) au lieu de '$ qry-> the_post () ', en tant que tel:' php foreach ($ posts en $ post) {setup_postdata ($ post);/* ... * /}?> ' – kjetilh