Функция paginate_links() в WordPress
paginate_links() — это функция WordPress, которая помогает генерировать ссылки для постов на страницах с архивами, позволяя пользователям удобно перемещаться между страницами. Эта функция особенно полезна на страницах, где показывается много записей, например, на страницах с записями блога.
Описание функции
Функция paginate_links() имеет несколько параметров, которые позволяют настроить подачу ссылок. Ниже описаны основные параметры:
- base: Базовый URL, который будет использоваться для создания пагинации. Например,
http://example.com/all_posts.php%_%. - format: Формат для замены номера страницы в ссылке. Например:
?page=%#%. - total: Общее количество страниц (число).
- current: Номер текущей страницы (число).
- type: Формат возвращаемого значения, может быть 'plain' (строка), 'array' (массив) и 'list' (неупорядоченный список HTML).
- prev_next: Позволяет включить ссылки на пред��дущую и следующую страницы (по умолчанию true).
- prev_text: Текст для ссылки на предыдущую страницу.
- next_text: Текст для ссылки на следующую страницу.
Пример использования
Приведём пример кода, который добавляет пагинацию на страницу с записями:
function my_pagenavi() {
global $wp_query;
$big = 999999999; // уникальное число для замены
$args = array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages,
);
$result = paginate_links($args);
// Убираем пагинацию для первой страницы
$result = preg_replace('~/page/1/?(['"])~', '', $result);
echo $result;
}
// В месте, где нужно вывести пагинацию:
my_pagenavi();
Основные параметры функции
Здесь вы можете увидеть более подробно, как работает каждый параметр:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
base |
Базовый URL для пагинации. | '' |
format |
Формат для структуры пагинации. | '' |
total |
Общее количество страниц. | 1 |
current |
Номер текущей страницы. | 'paged' |
prev_next |
Включить ссылки на предыдущую и следующую страницы. | true |
prev_text |
Текст для предыдущей страницы. | '« Предыдущая' |
next_text |
Текст для следующей страницы. | 'Следующая »' |
type |
Формат возвращаемого значения. | 'plain' |
Пример вывода с использованием массива
Допустим, у вас есть кастомный запрос WP_Query, и вы хотите вывести пагинацию для него:
$paged = absint(get_query_var('paged') ? : 1); // 1 значение по умолчанию
$the_query = new WP_Query([
'posts_per_page' => 5,
'category_name' => 'gallery',
'paged' => $paged,
]);
// Вывод записей
while ($the_query->have_posts()) {
$the_query->the_post();
?>
str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'current' => max(1, get_query_var('paged')),
'total' => $the_query->max_num_pages
));
Заключение
Функция paginate_links() является мощным инструментом для создания удобной навигации по страницам с множеством записей. Используя параметры функции, вы можете настроить подачу ссылок на страницы так, как вам нужно, и улучшить пользовательский опыт на вашем сайте WordPress.
Используйте paginate_links() для удобной навигации по вашим архивам и не забудьте протестировать пагинацию на различных страницах, чтобы убедиться, что всё работает как должно!