Как в WordPress вывести случайные записи?

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

Как выводятся записи в WordPress?

В WordPress, по умолчанию, записи выводятся в обратном хронологическом порядке (новые с самого начала). Такой вариант обеспечивает посетителям сайта всегда видеть новые материалы. Но что делать со старыми записями, особенно если их насчитывается более сотни? Ведь чтобы увидеть одну из них, пользователю придется по очереди их все просматривать. Один из способов показать на сайте старые материалы — организовать блок случайных записей.

Как вывести случайные записи?

Рассмотрим два способа решения этой задачи: через плагин и добавление специального PHP-кода в файл functions.php. Выводить их будем на боковой панели, в виджете.

Способ 1. Плагин Advanced Random Posts Widget

Итак, после установки и активации плагина Advanced Random Posts Widget, необходимо в админ-панели перейти Внешний вид -> Виджеты, где найти и перетащить в желаемое место боковой панели виджет Random Posts.

Виджет Random Posts

Как видно, виджет имеет огромное количество всевозможных настроек для вывода случайных постов. Так, Вы сможете выбрать тип постов (по умолчанию записи) для вывода (поле Post type), их количество (Number of posts to show) и статус (Post status).

Виджет Random Posts

Также на вкладке Thumbnail есть возможность показывать рядом с названием случайной записи ее миниатюру.

Виджет Random Posts

Вкладка Extras позволит вам вывести дополнительную информацию о записях (дату создания и изменения), а также краткое содержание постов. Для сохранения всех настроек необходимо нажать кнопку Сохранить.

Виджет Random Posts

В итоге главная страница сайта будет выглядеть следующим образом.

Главная страница сайта

Способ 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.

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

Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Обсуждение: 2
  1. Прохор

    А как рандомизировать вывод записей внутри рубрики? Желательно тоже через functions.php

    Буду очень признателен.

    1. Почитайте про функцию query_posts.

Задать вопрос