WordPress как на ладони
Готовые темы (шаблоны) для WordPress wordpress jino

next_post_link() WP 1.5.0

Выводит ссылку на следующую по дате запись. Используется на отдельных страницах: типа is_single().

Эта функция должна быть использована внутри цикла.

Не путайте очень похожую по названию функцию next_posts_link(), которая выводит ссылку на страницу со списком следующих постов, а не на ссылку на отдельный следующий пост.

Чтобы вывести ссылку на предыдущий пост смотрите функцию: previous_post_link().

Работает на основе: get_next_post_link()

Хуков нет.

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

<?php next_post_link( $format, $link, $in_same_cat, $excluded_terms, $taxonomy ); ?>
$format(строка)
Формат ссылки. Контролирует что будет до и после ссылки. Тег %link в строке будет заменен на ссылку. Например, 'Перейти к %link', выведет Перейти к Название статьи. Также в строке можно использовать параметр %date, тогда в текст ссылки будет добавлена еще и дата публикации поста.
По умолчанию: '%link »'
$link(строка)
Текст ссылки (Анкор). Тег %title будет заменен заголовком статьи.
По умолчанию: '%title'
$in_same_cat(логический)
Если установить этот параметр в true или 1, то будет выводиться ссылка на следующую статью из той же категории что и текущая.
По умолчанию: false
$excluded_terms (строка)
ID категории посты из которых не нужно учитывать при подборе следующего поста. Можно указать несколько категорий. Указывать нужно в массиве, через запятую или через слово and: например: '1,5,15' или array(1,5,15) или '1 and 5 and 15'. Если указан следующий параметр $taxonomy, то тут нужно указывать термины.
По умолчанию: нет
$taxonomy(строка)
Название таксономии ссылка на запись из которой будет получаться.
По умолчанию: 'category'

Примеры

#1 Следующая ссылка

Выведем следующую по дате публикации ссылку и выделим её жирным (HTML тегом strong):

<?php next_post_link('<strong>%link</strong>'); ?>

Вернет: <a rel="nofollow" href="/post_name">Заголовок поста</a>

#2 Из текущей категории

Выведем ссылку на следующую статью из текущей категории с текстом - "Следующая статья из категории" вместо заголовка статьи:

<?php next_post_link('%link', 'Следующая статья из категории', true); ?>

#3 Исключим категорию

Выведем ссылку на следующую по дате публикации статью, но не из категории 13 (статьи из категории 13 не будут учитываться):

<?php next_post_link('%link', '%title', false, '13'); ?>

#4 Таксономия

Ссылка на следующую запись из текущего термина указанной таксономии. Нужная нам таксономия называется battle_cat:

next_post_link( '%link', '< %title', true, '', 'battle_cat' );

#5 Зацикленный вывод

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

/**
 * Зацикленный вывод предыдущего и следующего поста в WordPress
 */
if( get_adjacent_post(false, '', true) ) { 
	previous_post_link('%link', '← Previous Post');
}
else { 
	$first = new WP_Query('posts_per_page=1&order=DESC');
	$first->the_post();

	echo '<a href="' . get_permalink() . '">← Предыдущий пост</a>';

	wp_reset_postdata();
}; 

if( get_adjacent_post(false, '', false) ) { 
	next_post_link('%link', 'Next Post →');
}
else { 
	$last = new WP_Query('posts_per_page=1&order=ASC');
	$last->the_post();

	echo '<a href="' . get_permalink() . '">Следующий пост →</a>';

	wp_reset_postdata();
}; 

Код next post link: wp-includes/link-template.php WP 4.7.5

<?php
function next_post_link( $format = '%link &raquo;', $link = '%title', $in_same_term = false, $excluded_terms = '', $taxonomy = 'category' ) {
	 echo get_next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy );
}

Cвязанные функции

Из метки: adjacent link (связанные ссылки)

Еще из раздела: Навигация

next_post_link 7 комментариев
  • Klava cайт: www.temaru.de
    @

    Вот вы пишите про возможность:

    1. Выведем ссылку на следующую статью из текущей категории с текстом - "Следующая статья из категории" вместо заголовка статьи:
      Код
    next_post_link('%link', 'Следующая статья из категории', true); ?>

    а у меня это не работает, как выводил по дате публикации, так и делает дальше sad

    Ответить6.1 лет назад #
    1
    • Kama4329

      Вы что-то не так делаете. Все работает!
      Не поленился, сейчас проверил, как написано так все и работает.

      Ответить6.1 лет назад #
  • Lumen

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

    Ответить4.3 года назад #
    • Lumen

      Сори, оказывается есть готовый супер-пупер плагин для этого, под названием Next/Previous Post Link Plus.

      Ответить4.3 года назад #
  • Антон
    @

    Тимур, доброго времени суток! Столкнулся с такой проблемой: при использовании функций next_post_link и prev_post_link если для записи присвоено несколько категорий, например категории 1, 2 и 3, то к примеру, когда пользователь пришел к записи (single) из категории 3 и соответственно кликнул на ссылку следующего поста, ну или предыдущего, то, как правило, начинаются "чудеса" в виде перебросов либо в категорию 1, либо 2 и сайт выглядит ломаным. Суть вопроса - может есть какой нибудь хак для этих функций, чтобы перелинковка осуществлялась только в пределах той категории, в которую пришел пользователь. Подскажите, может сталкивались с подобной проблемой? В инете информация очень скудна на этот счет.

    Ответить1.2 года назад #
    • Kama4329

      А параметр $in_same_cat не подходит?

      Ответить1.2 года назад #
      • Антон
        @

        В том то и дело, что параметр передается как TRUE. И получается, что in_same_cat работает в текущей категории, НО как только в текущей категории встречается пост которому присвоены две и более категорий происходит переброс в другую категорию. Причем если в той категории в которую перебросило опять встречается подобного рода пост, опять может перебросить в одну из присвоенных этому посту категорий. Т.е. смотрим на хлебные крошки, мы пришли, например, в категорию Мотоциклы, листаем посты в этой категории, натыкаемся на пост который принадлежит категориям Мотоциклы и Автомобили и оп-ля, мы уже сами того не желая в категории Автомобили. dash

        Ответить1.2 года назад #

Здравствуйте, !

Ваш комментарий