Часто на сайтах, особенно на блогах или информационных порталах, в отдельном блоке выводятся случайные записи. Такой ход довольно полезен для владельца сайта, так как дает возможность пользователям узнать больше о контенте ресурса в целом.
Как выводятся записи в WordPress?
В WordPress, по умолчанию, записи выводятся в обратном хронологическом порядке (новые с самого начала). Такой вариант обеспечивает посетителям сайта всегда видеть новые материалы. Но что делать со старыми записями, особенно если их насчитывается более сотни? Ведь чтобы увидеть одну из них, пользователю придется по очереди их все просматривать. Один из способов показать на сайте старые материалы – организовать блок случайных записей.
Как вывести случайные записи?
Рассмотрим два способа решения этой задачи: через плагин и добавление специального PHP-кода в файл functions.php. Выводить их будем на боковой панели, в виджете.
Способ 1. Плагин Advanced Random Posts Widget
Итак, после установки и активации плагина Advanced Random Posts Widget, необходимо в админ-панели перейти Внешний вид -> Виджеты, где найти и перетащить в желаемое место боковой панели виджет Random Posts.
Как видно, виджет имеет огромное количество всевозможных настроек для вывода случайных постов. Так, Вы сможете выбрать тип постов (по умолчанию записи) для вывода (поле Post type), их количество (Number of posts to show) и статус (Post status).
Также на вкладке Thumbnail есть возможность показывать рядом с названием случайной записи ее миниатюру.
Вкладка Extras позволит вам вывести дополнительную информацию о записях (дату создания и изменения), а также краткое содержание постов. Для сохранения всех настроек необходимо нажать кнопку Сохранить.
В итоге главная страница сайта будет выглядеть следующим образом.
Способ 2. Создание шорткода с помощью PHP-кода
Еще один способ вывести список случайных записей – создание специального шорткода, который может быть добавлен в виджет на боковой панели. Для этого необходимо добавить PHP-код в файл functions.php Вашей активной темы на WordPress-сайте.
Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.
Итак, для решения задачи в самый конец functions.php необходимо добавить следующие строки:
function wpschool_rand_posts() { $args = array( 'post_type' => 'post', 'orderby' => 'rand', 'posts_per_page' => 5, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { $string .= '<ul>'; while ( $the_query->have_posts() ) { $the_query->the_post(); $string .= '<li><a href="'. get_permalink() .'">'. get_the_title() .'</a></li>'; } $string .= '</ul>'; wp_reset_postdata(); } else { $string .= 'записей не найдено'; } return $string; } add_shortcode( 'wpschool-random-posts','wpschool_rand_posts' ); add_filter( 'widget_text', 'do_shortcode' );
В итоге будет создан шорткод [wpschool-random-posts], который необходимо будет вставить в виджет Текст. На сайте будут показаны 5 случайных записей в виде ненумерованного списка. Это число можно изменить, задав необходимое количество в строке ‘posts_per_page‘ => 5.
Также читайте: Как в WordPress произвольный тип записей register post type.
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.
А как рандомизировать вывод записей внутри рубрики? Желательно тоже через functions.php
Буду очень признателен.
Почитайте про функцию query_posts.