J'ai trouvé ce problème sur le support Wordpress et le sujet est malheureusement maintenant fermé. J'ai ce même problème ... (lire ci-dessous)
Nous avons créé un site où les membres peuvent recommander des choses comme des livres préférés, des films, des chansons, etc. Pour ce problème, j'utiliserai la page Films comme exemple.
La page "Films" est finalement un modèle de page personnalisé qui demande à wordpress d'afficher une liste aléatoire de TOUTES les publications qui ont reçu la catégorie "films" (catégorie 31). Il affiche le titre de ces films dans un ordre aléatoire en utilisant le code ci-dessous.
<?php
$rand = new WP_Query("cat=31&showposts=-1&orderby=rand");
while($rand->have_posts()) : $rand->the_post();
?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?>
<?php endwhile; ?>
Le problème est que la liste devient assez longue et je voudrais la diviser en deux ou plusieurs pages d'environ 10 films chacune. Pour y parvenir, j'ai utilisé le code ci-dessous.
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("cat=31&orderby=rand&showposts=10&paged=$page");
while ( have_posts() ) : the_post()
?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?>
<?php endwhile; ?>
Mais il y a un problème car bien qu'il divise les données en pages de 10 articles chacune (pagine), il n'inclut pas un nouvel ensemble de 10 articles à la page 2 et ainsi de suite. En d'autres termes, car il répertorie les choses dans un ordre aléatoire, il s'éteint et reçoit 10 autres publications aléatoires (ou dans ce cas, les titres de films). En conséquence, nous avons des articles de titres de films répétés au lieu d'un nouvel ensemble de 10 titres de films aléatoires à la page 2, etc.
Ma question est - que puis-je ajouter à ce code pour que wordpress se "souvienne" des 10 messages aléatoires qu'il a inclus à la page 1, puis lui faire obtenir un nouvel ensemble de 10 messages à mettre sur les pages 2, 3, etc. jusqu'à tous les messages sont affichés. Je voudrais qu'il n'y ait qu'une seule occurrence d'un article par page lors d'un tri aléatoire par ensembles de 10.
la source
Depuis les dernières versions de WordPress, vous pouvez désormais ajouter une graine à la valeur du
orderby
paramètre deWP_Query
:$seed
est un nombre aléatoire. Vous devez le stocker en tant que variable de session PHP. N'oubliez pas d'activer la session PHP dans WordPresssession_start()
en vous appelantfunctions.php
:Avec cette syntaxe, vous n'avez pas besoin d'utiliser le
posts_orderby
filtre. De plus, vous n'avez pas à vous assurer que le filtre n'est appliqué qu'à WP_Query ciblé.Pour plus d'informations, veuillez lire ce ticket sur WordPress Core.
la source