Как вывести последние записи в любом месте сайта WordPress

Хотите показать последние записи в тексте статьи или другом месте сайта WordPress? Это можно сделать с помощью шорткода. Разберем как его создать и вставлять.

Зачем создавать шорткод?

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

Выход — создать шорткод, который можно вызвать везде.

Как создать шорткод последних записей?

Все последующие действия предполагают редактирование functions.php — основного конфигурационного файла WordPress-темы. Если вы не знаете, как редактировать этот файл, то в этом случае поможет плагин ProFunctions.

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

Добавьте следующий код в functions.php вашей темы:

function wpschool_recent_posts_shortcode( $atts, $content = null ) {
    global $post;
    extract( shortcode_atts( array (
       'cat'     => '',
       'num'     => '5',
       'order'   => 'DESC',
       'orderby' => 'post_date',
    ), $atts ));
    
    $args = array(
       'cat'            => $cat,
       'posts_per_page' => $num,
       'order'          => $order,
       'orderby'        => $orderby,
    );

    $output = '';
    $posts = get_posts( $args );

    foreach( $posts as $post ) {
       setup_postdata( $post );
       $output .= '<li><a href="'. get_the_permalink() .'">'. get_the_title() .'</a></li>';
    }

    wp_reset_postdata();
    return '<ul>'. $output .'</ul>';
}
add_shortcode( 'recent_posts', 'wpschool_recent_posts_shortcode' );

Код будет работать в любой ВП-теме или плагине.

Чтобы добавить последние публикации в пост или страницу, вставьте в нужном месте шорткод:

[recent_posts num = "5" cat = "7"]

В итоге появится список из 5 записей из категории с ID=7. Вы можете настроить атрибуты по своему желанию. Шорткод также принимает несколько других атрибутов:

[recent_posts num = "10" cat = "" order = "asc" orderby = "rand"]

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

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

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

    Доброго времени суток.
    А как сделать тоже самое, только чтобы выводился не СПИСОК последних записей, а их МИНИАТЮРЫ (с заглавной картинкой статьи, заголовком…) с возможностью открыть эту статью кликнув по её миниатюре?
    Спасибо.

    1. Daria
      <a href="'. get_the_permalink() .'" rel="nofollow">'. get_the_post_thumbnail() .'</a><a href="'. ' . get_the_title() .'</a>

      Вставьте этот код в том месте, где у вас выводится LI в functions.php, после чего у вас будет выводится миниатюра с заголовком.

  2. Олег

    Здравствуйте!
    Очень ценная статья и авторитетный ресурс.
    А возможно, кроме миниатюр и заголовков статей, выводить и краткие анонсы с кнопкой «Читать далее»?

  3. Даниил

    Как добавить вывод даты?

    1. Даниил

      Разобрался сам, вот если кому нужно. Добавляем .get_the_date()

      foreach( $posts as $post ) {
      setup_postdata( $post );
      $output .= '' .get_the_date() . get_the_title() .'';
      }

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