paginate_links()

Получает ссылки пагинации для архивных страниц постов
Функция WordPress
INT 2.1.0
WordPress Icon

Описание функции

Функция paginate_links() используется для получения пагинированных ссылок для страниц архива постов. Она генерирует набор ссылок, позволяющих пользователю навигироваться по страницам архива.

Использование

paginate_links( string|array $args = '' ): string|string[]|void

Функция paginate_links() принимает один параметр, который является массивом или строкой аргументов для генерации пагинированных ссылок для архивов.

  • $args (строка или массив, необязательно) — Массив или строка аргументов для генерации пагинированных ссылок для архивов.
  • base (строка) — Базовый URL для пагинированных ссылок.
  • format (строка) — Формат структуры пагинации.
  • total (целое число) — Общее количество страниц. По умолчанию используется значение max_num_pages из WP_Query или 1.
  • current (целое число) — Текущий номер страницы. По умолчанию используется значение переменной 'paged' или 1.
  • aria_current (строка) — Значение атрибута aria-current. Возможные значения: 'page', 'step', 'location', 'date', 'time', 'true', 'false'. По умолчанию используется 'page'.
  • show_all (логическое значение) — Определяет, нужно ли показывать все страницы. По умолчанию false.
  • end_size (целое число) — Количество номеров страниц в начале и в конце списка. По умолчанию 1.
  • mid_size (целое число) — Количество номеров страниц по обе стороны от текущей страницы. По умолчанию 2.
  • prev_next (логическое значение) — Определяет, нужно ли включать ссылки на предыдущую и следующую страницы в списке. По умолчанию true.
  • prev_text (строка) — Текст ссылки на предыдущую страницу. По умолчанию '« Previous'.
  • next_text (строка) — Текст ссылки на следующую страницу. По умолчанию 'Next »'.
  • type (строка) — Определяет формат возвращаемого значения. Возможные значения: 'plain', 'array' и 'list'. По умолчанию 'plain'.
  • add_args (массив) — Массив аргументов запроса для добавления. По умолчанию false.
  • add_fragment (строка) — Строка, добавляемая к каждой ссылке. По умолчанию ''.
  • before_page_number (строка) — Строка, отображаемая перед номером страницы. По умолчанию ''.
  • after_page_number (строка) — Строка, добавляемая после номера страницы. По умолчанию ''.

Функция возвращает строку или массив ссылок на страницы в зависимости от значения аргумента 'type'. Если общее количество страниц меньше 2, функция возвращает void.

<?php
$args = array(
  'base' => '%_%',
  'format' => '?page=%#%',
  'total' => 10,
  'current' => 1,
  'aria_current' => 'page',
  'show_all' => false,
  'end_size' => 1,
  'mid_size' => 2,
  'prev_next' => true,
  'prev_text' => '« Previous',
  'next_text' => 'Next »',
  'type' => 'plain',
  'add_args' => false,
  'add_fragment' => '',
  'before_page_number' => '',
  'after_page_number' => ''
);
$pagination = paginate_links( $args );
echo $pagination;
?>

В этом примере мы создаем массив $args, который содержит все параметры для функции paginate_links(). Затем мы вызываем функцию с этими аргументами и сохраняем результат в переменную $pagination. Наконец, мы выводим пагинацию на экран с помощью echo.

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

Генерация пагинации для архивных страниц


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
echo paginate_links($args);

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

Создание ссылок на страницы архива


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
$pagination = paginate_links($args);
if ($pagination) {
    echo '<div class="pagination">' . $pagination . '</div>';
}

В этом примере мы создаем пагинацию для архивных страниц и сохраняем результат в переменную $pagination. Затем мы проверяем, есть ли пагинация, и если есть, выводим ее в блок div с классом «pagination».

Настройка формата пагинации


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'list',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
echo paginate_links($args);

В этом примере мы настраиваем формат пагинации на список (type = ‘list’). Результат будет выглядеть как неупорядоченный список ul/li.

Отображение всех страниц


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => true,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
echo paginate_links($args);

В этом примере мы устанавливаем параметр show_all в true, чтобы показать все страницы пагинации, а не только некоторое количество.

Добавление предыдущей и следующей ссылок


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
echo paginate_links($args);

В этом примере мы включаем предыдущую и следующую ссылки в пагинацию.

Изменение текста ссылок


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('Previous'),
    'next_text' => __('Next'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
echo paginate_links($args);

В этом примере мы изменяем текст предыдущей и следующей ссылок на «Previous» и «Next» соответственно.

Форматирование возвращаемого значения


$args = array(
    'base' => '%_%',
    'format' => '?paged=%#%',
    'total' => 10,
    'current' => 1,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => 2,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'type' => 'array',
    'add_args' => false,
    'add_fragment' => '',
    'before_page_number' => '',
    'after_page_number' => ''
);
$pagination = paginate_links($args);
if ($pagination) {
    foreach ($pagination as $link) {
        echo '<span class="page-link">' . $link . '</span>';
    }
}

В этом примере мы настраиваем формат возвращаемого значения на массив (type = ‘array’). Затем мы проходимся по каждой ссылке в массиве и выводим ее внутри элемента span с классом «page-link».

Вопросы и ответы

Как изменить формат структуры пагинации?

Функция paginate_links() позволяет изменить формат структуры пагинации с помощью параметра format. Данный параметр принимает строковое значение и определяет, как будет выглядеть структура пагинации.

Пример использования:


$args = array(
    'format' => '?paged=%#%', // пагинация в виде "?paged=номер_страницы"
);
echo paginate_links( $args );

Как указать базовый URL для пагинации?

Для указания базового URL для пагинации используется параметр base. Он принимает строковое значение и определяет базовый URL для генерации ссылок пагинации.

Пример использования:


$args = array(
    'base' => '/blog/%_%', // базовый URL вида "/blog/номер_страницы"
);
echo paginate_links( $args );

Как изменить текст ссылок на предыдущую и следующую страницы?

Для изменения текста ссылок на предыдущую и следующую страницы используются параметры prev_text и next_text. Они принимают строковые значения и определяют текст ссылок на предыдущую и следующую страницы соответственно.

Пример использования:


$args = array(
    'prev_text' => '« Назад', // текст ссылки на предыдущую страницу
    'next_text' => 'Вперед »', // текст ссылки на следующую страницу
);
echo paginate_links( $args );

Как изменить количество отображаемых номеров страниц на краях списка?

Для изменения количества отображаемых номеров страниц на краях списка используются параметры end_size и mid_size. Они принимают целочисленные значения и определяют количество номеров страниц на краях и по бокам от текущей страницы соответственно.

Пример использования:


$args = array(
    'end_size' => 2, // 2 номера страниц на краях списка
    'mid_size' => 3, // 3 номера страниц по бокам от текущей страницы
);
echo paginate_links( $args );

Как изменить количество отображаемых номеров страниц по бокам от текущей страницы?

Для изменения количества отображаемых номеров страниц по бокам от текущей страницы необходимо использовать параметры end_size и mid_size функции paginate_links().

Параметр end_size определяет количество номеров страниц, которые будут отображены в начале и в конце списка пагинации. По умолчанию значение этого параметра равно 1.

Параметр mid_size определяет количество номеров страниц, которые будут отображены по бокам от текущей страницы. По умолчанию значение этого параметра равно 2.

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


$args = array(
    'end_size' => 1,
    'mid_size' => 2
);
paginate_links($args);

Как указать значение атрибута aria-current для ссылок пагинации?

Для указания значения атрибута aria-current для ссылок пагинации необходимо использовать параметр aria_current функции paginate_links().

Параметр aria_current принимает следующие значения: page, step, location, date, time, true, false. По умолчанию значение этого параметра равно page.

Например, чтобы указать значение step для атрибута aria-current для ссылок пагинации, можно использовать следующий код:


$args = array(
    'aria_current' => 'step'
);
paginate_links($args);

Как отобразить все страницы пагинации?

Для отображения всех страниц пагинации необходимо использовать параметр show_all функции paginate_links().

Параметр show_all принимает значение true или false. По умолчанию значение этого параметра равно false.

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


$args = array(
    'show_all' => true
);
paginate_links($args);

Как добавить фрагмент к каждой ссылке пагинации?

Для добавления фрагмента к каждой ссылке пагинации необходимо использовать параметр add_fragment функции paginate_links().

Параметр add_fragment принимает строку, которая будет добавлена к каждой ссылке пагинации. По умолчанию значение этого параметра равно пустой строке.

Например, чтобы добавить фрагмент «section» к каждой ссылке пагинации, можно использовать следующий код:


$args = array(
    'add_fragment' => 'section'
);
paginate_links($args);

Функция paginate_links() позволяет генерировать пагинацию для архивных страниц постов. Она предоставляет гибкие возможности для настройки отображения номеров страниц и других параметров пагинации. Используя различные параметры функции, разработчики могут легко изменять внешний вид и функциональность пагинации в своих проектах на WordPress.

Связанные элементы

  • Функция get_previous_posts_link(): Возвращает HTML-ссылку на предыдущую страницу архива записей.
  • Функция get_next_posts_link(): Возвращает HTML-ссылку на следующую страницу архива записей.
  • Функция get_the_category(): Возвращает массив объектов категорий, к которым принадлежит текущая запись.
  • Функция get_the_author_meta(): Возвращает значение мета-данных автора для указанного поля.
  • Функция get_the_post_thumbnail(): Возвращает HTML-код миниатюры записи (изображения).
  • Хук pre_get_posts: Позволяет изменять параметры запроса до его выполнения.
  • Хук wp_title: Позволяет изменять заголовок страницы.
  • Хук the_content: Позволяет изменять содержимое записи перед его выводом.
  • Класс WP_Query: Используется для выполнения запросов к базе данных WordPress и получения соответствующих записей.
Обсуждение