wp_get_archives() — выводит список ссылок на архивы постов — навигацию по архивам

Функция позволяет реализовать различными способами навигацию по страницам архивов постов на сайте.

wp_get_archives($args = '')

Значения параметра $args по умолчанию:

$args = array(
	'type'            => 'monthly',
	'limit'           => '',
	'format'          => 'html', 
	'before'          => '',
	'after'           => '',
	'show_post_count' => false,
	'echo'            => 1,
	'order'           => 'DESC'
);

По умолчанию функция выводит ссылки на страницы архивов по месяцам в виде <ul> маркированого списка без ограничения по количеству. Ссылки выводятся в убывающем порядке (т.е. более свежие в начале списка, более старые — в конце).

Параметры массива $args:

type
(строка) В каком виде нужно выводить ссылки:

  • monthly — список архивов по месяцам (по умолчанию),
  • yearly — список архивов по годам,
  • daily — по дням,
  • weekly — по неделям,
  • postbypost — выводит ссылки на посты, отсортированные по дате,
  • alpha — выводит ссылки на посты, отсортированные по алфавиту (по заголовку).
limit
(целое число) Количество ссылок, которые нужно отобразить. По умолчанию — все.
format
(строка) В каком виде вывести ссылки. Может принимать значения:

  • html — HTML список <li>,
  • option — в виде выпадающего списка <select>, при этом выведены будут только элементы <option> с атрибутами value равными ссылками на соответствующие страницы архивов, тег<select> кстати надо будет добавить самому (подробнее в примерах),
  • link — каждая ссылка будет добавлена в тег <link>, в этом случае они не будут отображаться на сайте,
  • custom — ссылки просто идут подряд.
before
(строка) Текст или HTML-код, который будет автоматически добавлен перед каждой ссылкой. Этот параметр можно использовать только если format равен html или custom.
after
(строка) Текст или HTML-код, который будет автоматически добавлен после каждой ссылки. Использовать только если параметр format равен html или custom.
show_post_count
(логическое) Нужно ли рядом с каждой ссылкой отображать количество содержащихся постов. Не работает, если type равен postbypost или alpha.
echo
(логическое)

  • true — вывести результат действия функции (по умолчанию),
  • false — возвратить;
order
(строка) Направление сортировки. Параметр игнорируется, если type равен alpha.

  • ASC — по возрастанию (А-Я),
  • DESC — по убыванию (Я-А) (по умолчанию).

Примеры

Выводим список архивов за последние двенадцать месяцев:

wp_get_archives( array( 'limit' => 12 ) );

Список архивов за последние 3 года (выводятся ссылки только на страницы архивов по годам):

wp_get_archives( array( 'type' => 'yearly', 'limit' => 3 ) );

Используя эту функцию, мы также можем просто вывести свежие записи на блоге:

wp_get_archives( array( 'type' => 'postbypost', 'limit' => 10 ) );

Уверен, на многих сайтах вы видели выпадающий список архивов, при выборе месяца в котором происходил автоматический переход на страницу этого месяца. Реализовать это совсем нетрудно:

<select onchange="document.location.href=this.options[this.selectedIndex].value;">
	<option value="">Выберите месяц...</option> 
	<?php wp_get_archives( array( 'type' => 'monthly', 'format' => 'option', 'show_post_count' => 1 ) ); ?>
</select>

Выведем все посты на блоге, отсортированные в алфавитном порядке:

wp_get_archives( array( 'type' => 'alpha' ) );

Комментарии 4

  • Алексей17 ноября 2015 в 19:11 #

    Здравствуйте! Вывожу на сайте последние статьи

    <?php wp_get_archives ('type=postbypost&limit=10'); ?>

    Подскажите пожалуйста!? как для этих постов можно задать шаблон loop.php

    • Миша18 ноября 2015 в 00:11 #

      Здравствуйте!
      Не уверен, что эта функция позволит вам такое, возможно вам следует рассмотреть альтернативный вариант (get_posts() по идее должен подойти).

  • Alex25 января 2016 в 12:01 #

    Lобрый день, у меня после каждой статьи выводится 3 последних поста

    Как этим постам задать rel="nofollow"?

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.