Однажды мне понадобилось реализовать такую функцию, чтобы через определенное и заданное время посты на сайте меняли свое расположение и каждому посетителю они показывались в случайном порядке. Необходимо в произвольном порядке сортировать записи на сайте, сохраняя их положение.

Реклама

В голову сразу пришла идея прописать функцию рандомного вывода постов на главной:

<?php global $query_string; query_posts($query_string . "&orderby=rand"); // сортирует посты в рандомном порядке ?>
<?php if ( have_posts() ) : ?>

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php endif; ?>

Однако если посетитель сайта обновит страницу, то посты снова поменяют порядок. Так как же быть?

Для решения проблемы я установил WordPress плагин WP Super Cache, который сохраняет сайт в кэш. В настройках плагина прописываем время, в течении которого посты не должны будут менять свое положение, то есть то приблизительное время, которое посетитель будет на сайте, например 20 минут:

wp-super-cache

Теперь в течении 20 минут посты не изменят своего положения.