Функция next_post_link()
в WordPress позволяет создавать ссылки на следующий пост, который находится в хронологическом порядке относительно текущего поста. Это полезный инструмент для навигации между записями, особенно на страницах типа is_single()
. В данной статье мы рассмотрим параметры функции, её использование и приведём примеры кода.
next_post_link( string $format = '%link »', string $link = '%title', bool $in_same_term = false, int[]|string $excluded_terms = '', string $taxonomy = 'category' )
Параметры
- $format (строка, необязательный): Формат ссылки. По умолчанию:
'%link »'
. - $link (строка, необязательный): Формат ссылки на пост. По умолчанию:
'%title'
. - $in_same_term (логический, необязательный): Если true, ссылка будет выбрана из той же таксономии. По умолчанию:
false
. - $excluded_terms (массив|строка, необязательный): Массив или список ID таксономий, которые будут исключены из поиска. По умолчанию:
''
. - $taxonomy (строка, необязательный): Название таксономии, если $in_same_term равно true. По умолчанию:
'category'
.
Возвращаемое значение
Функция не возвращает никакого значения (null), а выводит HTML-код ссылки.
Использование функции
Чтобы использовать next_post_link()
, необходимо добавить её на странице одиночной записи, как в следующем примере:
<?php
next_post_link('%link', '%title');
?>
Если следующей записи нет, функция просто ничего не выводит.
Пример 1: Стандартное использование
Выведем ссылку на следующий пост, используя стандартный формат:
<?php next_post_link(); ?>
Этот код создаст ссылку с заголовком следующей записи и стрелкой »
.
Пример 2: Изменение формата ссылки
Если мы хотим выделить ссылку с помощью тега <strong>
, можем сделать так:
<?php next_post_link('<strong>%link</strong>'); ?>
Это создаст ссылку, где заголовок будет выделен жирным шрифтом.
Пример 3: Использование пользовательского текста
Вместо заголовка поста можно использовать произвольный текст. Например, если вы хотите вывести текст «Следующая статья из категории», то сделайте следующее:
<?php next_post_link('%link', 'Следующая статья из категории', true); ?>
Пример 4: Исключение категории
Чтобы исключить определённую категорию (например, с ID 13) из поиска следующего поста, можно использовать:
<?php next_post_link('%link', '%title', false, '13'); ?>
Пример 5: Использование пользовательской таксономии
Если у вас есть пользовательская таксономия (например, my_custom_taxonomy
), и вы хотите получить ссылку на следующий пост из этой таксономии, используйте следующий код:
<?php next_post_link('%link', 'Следующий пост в таксономии', true, '', 'my_custom_taxonomy'); ?>
Пример 6: Зацикленный вывод
Если вы хотите реализовать зацикленный вывод, где при отсутствии следующей записи будет показан первый пост, можно использовать следующий код:
<?php
if (get_adjacent_post(false, '', false)) {
next_post_link('%link', 'Следующий пост →');
} else {
$first = new WP_Query('posts_per_page=1&order=ASC');
$first->the_post();
echo '<a href="' . get_permalink() . '">Следующий пост →</a>';
wp_reset_postdata();
}
?>
Пример 7: Визуальное оформление с Bootstrap
Если вы используете Bootstrap и хотите изменить классы ссылок, это можно сделать через фильтр:
function wpdocs_add_post_link($html) {
$html = str_replace('<a ', '<a class="page-link" ', $html);
return $html;
}
add_filter('next_post_link', 'wpdocs_add_post_link');
add_filter('previous_post_link', 'wpdocs_add_post_link');
И в шаблоне используйте:
<ul class="pagination justify-content-center mb-4">
<li class="page-item">
<?php next_post_link('%link', '<i class="fas fa-arrow-right"></i> %title'); ?>
</li>
<li class="page-item">
<?php previous_post_link('%link', '%title <i class="fas fa-arrow-left"></i>'); ?>
</li>
</ul>
Пример 8: Изменение атрибута title для ссылок
Для изменения атрибута title
каждой ссылки можно добавить следующий код в ваш файл functions.php
:
add_filter('next_post_link', 'add_title_adjacent_post_link', 10, 4);
add_filter('previous_post_link', 'add_title_adjacent_post_link', 10, 4);
function add_title_adjacent_post_link($output, $format, $link, $post) {
$title = esc_attr('Смотрите: ' . $post->post_title);
return str_replace('<a', "<a title='$title'", $output);
}
Теперь каждая ссылка на следующий и предыдущий пост будет содержать соответствующий атрибут title
.
Заключение
Функция next_post_link()
является мощным инструментом для создания навигации между постами в WordPress. Благодаря её гибкости и множеству параметров, вы можете настроить ссылки так, чтобы они соответствовали вашим требованиям и стилю. Надеемся, что примеры, приведённые в этой статье, помогут вам лучше понять, как использовать эту функцию в своих проектах.