Для вывода последних записей можно использовать виджет "Последние записи", который выводит эти самые последние записи в виде списка из ссылок. Однако, что делать, если необходимо вывести их в другом виде?
Для этого в ядре WordPress существует функция wp_get_recent_posts()
, которая предполагает как раз обращение к последним записям на вашем WordPress-сайте. Ее синтаксис таков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
wp_get_recent_posts($args, $output ); //например wp_get_recent_posts( [ 'numberposts' => 10, 'offset' => 0, 'category' => 0, 'orderby' => 'post_date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => 'post', 'post_status' => 'draft, publish, future, pending, private', 'suppress_filters' => true, ], OBJECT) |
Параметры функции:
$args
- массив аргументов по которым нужно получить последние посты.$output
- тип возвращаемых данных:ARRAY_A (по умолчанию)
- массив массивов с данными постов, в индексах массива будет ID поста.OBJECT
- массив объектов WP_Post, в индексах массива будут числа по порядку.
Когда вы используете функцию wp_get_recent_posts()
, вам необходимо пройти в цикле по тем последним записям, которые вы получите в результате. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $result = wp_get_recent_posts( array( 'numberposts' => 3, 'post_status' => 'publish', ) ); foreach( $result as $post ){ setup_postdata( $post ); ?> <p><a href="<?php echo get_permalink($post['ID']) ?>"><?php echo $post['post_title'] ?></a></p> <?php wp_reset_postdata(); } ?> |
Поскольку переменная $post
используется в цикле WordPress для вывода текущей записи или страницы или списка записей на главной или в блоге, например, то в цикле вывода последних записей вам нужно использовать функции setup_postdata( $post )
и wp_reset_postdata()
.
В том случае, когда вам нужно получить последние записи из определенной категории, вы можете указать параметр 'category' => 18
, например, и тогда посты будут выводиться только из этой категории, скажем, это какие-то новости. Либо вы можете еще почитать, как сделать плагин для вывода подобных записей из той категории, к которой принадлежит статья, которую сейчас читает пользователь.
Пример выше, в общем-то повторяет функционал виджета последних записей, поэтому нам нужно переписать код, чтобы получить что-то более интересное. Например, нам нужно вывести в футере блок последних записей в виде списка с изображениями, заголовками-ссылками на запись и датой ее публикации.
Пример вывода последних записей в футере
В файле functions.php или любом другом, который отвечает у вас за функции темы (шаблона) и подключен в functions.php, например, с именем template-functions.php, мы разместим такую функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function show_resent_posts(){ $result = wp_get_recent_posts( [ 'numberposts' => 3, 'post_status' => 'publish', ] ); foreach( $result as $post ){ setup_postdata( $post ); $thumbnail_url = has_post_thumbnail($post["ID"]) ? get_the_post_thumbnail_url( $post["ID"], 'thumbnail' ): THEME_URI."/assets/img/thumbnail-small.png"?> <div class="single-recent-post"> <div class="thumb bg-cover" style="background-image: url(<?php echo $thumbnail_url ?>);"></div> <div class="post-data"> <span><i class="fa-solid fa-calendar-days"></i> <?php echo mysql2date( get_option('date_format'),$post["post_date"]); ?></span> <h5><a href="<?php echo get_permalink($post["ID"]) ?>"><?php echo $post["post_title"]; ?></a></h5> </div> </div> <?php } wp_reset_postdata(); } |
Затем эту функцию необходимо использовать в файле footer.php в одном из блоков, где вы хотите выводить последние записи:
1 2 3 4 5 6 7 8 9 10 |
<div class="col-md-6 col-lg-3"> <div class="single-footer-wid recent_post_widget"> <div class="wid-title"> <h4>Последние статьи</h4> </div> <div class="recent-post-list"> <?php show_resent_posts(); ?> </div> </div> </div> |
В результате мы получим такой внешний вид на сайте.
Слева последняя статья показана без изображения записи (она использует стандартную для темы иконку), а справа - с уже установленным изображением записи.
Для этой темы используется Bootstrap, поэтому в разметке есть классы col-md-6 col-lg-3
и Font Awesome, т.к. для вывода иконки календаря мы используем код <i class="fa-solid fa-calendar-days"></i>
.
Особенности и параметры функции wp_get_recent_posts()
Особенностью функции wp_get_recent_posts()
является то, что вы не можете использовать в ней такие функции, как the_title()
или the_date()
, т.к. они будут давать вам заголовок и дату текущей записи (страницы), а не той, которая является последней в вашем цикле. Поэтому вы можете выбирать любой из необходимых параметров этой функции, но использовать его в виде <?php echo $post['param'] ?>
.
Давайте посмотрим, какие же данные мы можем получить для последних записей.
Данные, возвращаемые для каждого поста
ID
(число) - идентификатор записи.post_author
(число) - идентификатор автора записи.post_date
(строка) - дата записи в формате YYYY-MM-DD HH:MM:SS (с учетом исправления времени).post_date_gmt
(строка) - дата записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).post_content
(строка) - текст записи.post_title
(строка) - заголовок записи.post_excerpt
(строка) - цитата записи.post_status
(строка) - статус записи, может быть:publish|pending|draft|private|static|object|attachment|inherit|future|trash
.comment_status
(строка) - возможность комментирования для записи, может быть:open|closed|registered_only
.ping_status
(строка) - статус пингов/трэкбэков, может быть:open|closed
.post_password
(строка) - пароль записи.post_name
(строка) - имя записи (слаг). Название которое обычно используется в УРЛ-е.to_ping
(строка) - URL-ы из статьи, на которые нужно отправить уведомления при обновлении поста.pinged
(строка) - URL-ы из статьи, которые уже получили уведомления.post_modified
(строка) - дата изменения записи в формате YYYY-MM-DD HH:MM:SS (с учетом корректировки времени).post_modified_gmt
(строка) - дата изменения записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).post_parent
(число) - ID родительской страницы (отлично от нуля у прикрепленных типов записей).guid
(строка) - уникальный идентификатор записи (для RSS), обычно содержит ссылку на запись. Нельзя использовать этот параметр в качестве постоянной ссылки на пост.menu_order
(число) - порядковый номер для построения меню (используется для постоянных страниц).post_type
(строка) - тип записи: post, page, attachment и т.д.post_mime_type
(строка) - какого типа вложения нужно получить. Можно использовать, когда параметр post_type = attachment. Например:- image/jpeg
- image/png
- image/gif
- image - для любых картинок
- audio/mpeg
- application/pdf
- application/zip (полный список mime-типов)
comment_count
(число) - количество комментариев у записи.