get_posts() — позволяет получить массив из объектов постов, соответствующих заданным параметрам

Функция возвращает массив, содержащий объекты постов (записей, страниц, вложений, произвольных типов постов или всё сразу), соответствующие заданным параметрам. Прежде всего хочу сказать — если вам нужно вывести посты, то рассмотрите использование WP_Query для этих целей.

get_posts( $args )

Имеет следующие значения параметров по умолчанию:

$params = array(
	'post_type' => 'post', // тип постов - записи
	'numberposts' => 5, // получить 5 постов, можно также использовать posts_per_page
	'orderby' => 'date', // сортировать по дате
	'order' => 'DESC', // по убыванию (сначала - свежие посты)
	'suppress_filters' => true // 'posts_*' и 'comment_feed_*' фильтры игнорируются
);

Соответствия параметров get_posts() и WP_Query

Любой из параметров WP_Query прекрасно подойдет и для get_posts(). Кроме того, функция имеет несколько эквивалентных параметров:

Параметр get_posts() Его эквивалент в WP_Query
numberposts posts_per_page
category cat
include post__in
Также устанавливает значение posts_per_page равным количеству перечисленных постов.
exclude post__not_in

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

Примеры использования get_posts()

Для начала самый простой пример — выведем ссылки на 5 последних опубликованных постов на блоге. Для получения URL постов нам также потребуется функция get_permalink().

$recent_posts_array = get_posts(); // получаем массив постов
foreach( $recent_posts_array as $recent_post_single ) : // для каждого поста из массива
	echo '<a href="' . get_permalink( $recent_post_single ) . '">' . $recent_post_single->post_title . '</a>'; // выводим ссылку
endforeach; // конец цикла

Аналогичный пример, но с использованием функция the_permalink() (для вывода урл) и the_title() (для вывода заголовков).

<?php
$params = array(
	'posts_per_page' => 5 // этот параметр не обязателен, так как get_posts() по умолчанию и так выводит 5 постов
);
$recent_posts_array = get_posts( $params );
foreach( $recent_posts_array as $recent_post_single ) :
	setup_postdata( $recent_post_single ); // устанавливает $post (глобальная переменная - объект поста)
	?><a href="<?php the_permalink() /* URL записи */ ?>"><?php the_title() /* выводим заголовок */ ?></a><?php
endforeach;
wp_reset_postdata(); // сбрасывает $post

Больше примеров смотрите здесь.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.