2016-07-11 9 views
1

Ich habe eine Kategorie mit 20 Posts und ich möchte die Beiträge auf der Seite für jeden einzelnen Benutzer, der den Blog besucht mischen.Wordpress: Randomize Beiträge und Keep Order on Reload

Ich weiß, dass ich dies die Beiträge randomisieren verwenden kann:

<?php query_posts('orderby=rand');?> 

Aber wie verhindere ich den Auftrag nach seiner randomize seines so nicht ständig auf Refresh chagning?

+1

Der einfachste Weg ist, diese IDs in dieser Reihenfolge in einem Cookie zu speichern, denke ich. Oder speichern Sie diese Server-Seite mit einer Referenz-ID innerhalb des Cookies ... Aber dann können Sie die Beiträge beim nächsten Besuch neu bestellen, wenn der Cookie mit PHP gesetzt ist. Zumindest wenn Sie immer die gleichen Posts anzeigen, sonst könnten Sie den 'post__in'-Parameter verwenden, um die gleichen Posts wie zuvor auszuwählen. Eine andere Lösung könnte das Schreiben einer benutzerdefinierten Abfrage in Wordpress sein, so dass Sie 'FIELD()' verwenden können, um die Beiträge in einer bestimmten Reihenfolge zu sortieren: http://dba.stackexchange.com/questions/109120/how-does-order-by -field-in-mysql-intern-intern –

+0

@ErikvandeVen Wenn ich einen Cookie setze, wie binde ich den Cookie an die Reihenfolge, in der sich die Posts befinden, so dass sie sich beim erneuten Laden nicht ändert? –

Antwort

0

So wie ich schon sagte, ist der einfachste Weg, um die IDs in dieser Reihenfolge in einem Cookie gespeichert werden, also die Ergebnisse Ihrer Cookie könnte wie folgt aussehen:

[12344,13413,13421,44445,12342] 

Sie können die Reihenfolge der IDs innerhalb der sparen Datenbank und speichern Sie eine Referenz in Ihrem Cookie. Ein bisschen sicherer, aber auch ein bisschen mehr Arbeit. Und ich weiß nicht, oder die IDs von Posts sind sowieso irgendwo im Front-End verfügbar, also wenn das der Fall ist, würde ich vorschlagen, sie einfach in deinem Cookie zu speichern.

In Ihrem Front-End könnten Sie prüfen, ob der Cookie gesetzt ist, wenn Sie nicht nur die Posts zufällig erhalten. Wenn der Cookie gesetzt ist, können Sie ihn wie folgt anzeigen:

query_posts(array('post__in' => $_COOKIE['cookie'], 'orderby' => 'post__in')); 
+0

Muss ich die Cookies manuell speichern oder gibt es einen anderen Weg? –

Verwandte Themen