можно ли получить next_post_link


9

Я столкнулся с проблемой при использовании функции next_post_link (). Кажется, что эта функция автоматически выводит эхо, по причинам позиции мне нужно просто вернуть ссылку. Есть ли какая-либо доступная функция или обходной путь, который я могу использовать для достижения этого результата?

Ответы:


17

попробуйте поработать с http://codex.wordpress.org/Function_Reference/get_adjacent_post ;

пример:

$next_post_link_url = get_permalink( get_adjacent_post(false,'',false)->ID ); 
$prev_post_link_url = get_permalink( get_adjacent_post(false,'',true)->ID );

1
Имейте в виду, что при этом будет получен только соседний URL - вам придется генерировать HTML-код, как next_post_linkи вы сами.
TheDeadMedic

2

Если вы посмотрите на источник, next_post_linkэто просто обертка для adjacent_post_link.

К сожалению, эта функция не принимает никакой формы параметра 'echo', поэтому вам нужно либо скопировать код в вашей собственной функции и вернуть значение, либо перехватить его в выходном буфере;

ob_start();
next_post_link();
$next_post_link = ob_get_clean();

1

На самом деле, да: просто используйте get_next_posts_link(), используя те же аргументы.

next_posts_lin()Функция просто повторяет возвращаемое значение get_next_posts_link().

РЕДАКТИРОВАТЬ

Хм, неважно. Я неправильно прочитал название функции.

Вы можете использовать get_next_post(), который возвращает объект сообщения; тогда вы можете получить постоянную ссылку из возвращенного параметра объекта ID:

$nextpost = `get_next_post( $args )`;
$nextpostid = $nextpost->ID;
$nextpostlink = get_permalink( $nextpostid );
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.