Ich habe dieses Problem im Wordpress-Support gefunden und das Thema ist jetzt leider geschlossen. Ich habe das gleiche Problem ... (siehe unten)
Wir haben eine Site erstellt, auf der Mitglieder Dinge wie Lieblingsbücher, Filme, Lieder usw. empfehlen können. Für dieses Problem verwende ich die Seite Filme als Beispiel.
Die Seite "Filme" ist letztendlich eine benutzerdefinierte Seitenvorlage, die WordPress auffordert, eine zufällige Liste ALLER Beiträge anzuzeigen, denen die Kategorie "Filme" (Kategorie 31) zugewiesen wurde. Der Titel dieser Filme wird in zufälliger Reihenfolge mit dem folgenden Code angezeigt.
<?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; ?>
Das Problem ist, dass die Liste ziemlich lang wird und ich sie gerne in zwei oder mehr Seiten mit jeweils etwa 10 Filmen aufteilen möchte. Um dies zu erreichen, habe ich den folgenden Code verwendet.
<?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; ?>
Es gibt jedoch ein Problem, da die Daten zwar in Seiten mit jeweils 10 Posts (Paginaten) aufgeteilt werden, jedoch keine neuen 10 Posts auf Seite 2 usw. enthalten sind. Mit anderen Worten, weil es Dinge in einer zufälligen Reihenfolge auflistet, geht es einfach aus und erhält weitere 10 zufällige Beiträge (oder in diesem Fall Filmtitel). Infolgedessen haben wir einige wiederholte Beiträge zu Filmtiteln anstelle von neuen 10 zufälligen Filmtiteln auf Seite 2 usw.
Meine Frage ist - was kann ich zu diesem Code hinzufügen, um WordPress zu veranlassen, sich zu "erinnern", welche 10 zufälligen Posts es auf Seite 1 enthielt, und es dann einen neuen Satz von 10 Posts erhalten zu lassen, die auf den Seiten 2, 3 usw. abgelegt werden sollen, bis Alle Beiträge werden angezeigt. Ich möchte, dass nur ein Beitrag pro Seite auftritt, wenn er zufällig in Zehnersätzen sortiert wird.
quelle
Seit den letzten Versionen von WordPress können Sie jetzt einen Startwert zum Wert des
orderby
Parameters hinzufügenWP_Query
:$seed
ist eine Zufallszahl. Sie sollten es als PHP-Sitzungsvariable speichern. Vergessen Sie nicht, die PHP-Sitzung in WordPress zu aktivieren, indemsession_start()
Sie Folgendes aufrufenfunctions.php
:Mit dieser Syntax müssen Sie den
posts_orderby
Filter nicht verwenden. Darüber hinaus müssen Sie nicht sicherstellen, dass der Filter nur auf die Ziel-WP_Query angewendet wird.Für weitere Informationen lesen Sie bitte dieses Ticket auf WordPress Core.
quelle