serejatoje
@serejatoje

Как получить корректную ссылку на следующий пост в wp?

Всем привет! У меня есть плагин для сортировки таксономий и постов. Я вручную перетаскиваю их в админке, как мне надо. На странице поста у меня есть ссылка на следующий пост, тем самым можно их как бы листать.
Но всё бы ничего, появилась проблема. Если мы переходим в последний пост какой-то категории, то ссылка на следующий пост просто рандомная. Т.е. не соответствует первому посту из следующей категории.
Ниже немного кода, который нашел на просторах интернета. Как я понимаю, тут нужно что-то сделать, чтобы ссылка выводилась на первый пост, именно из следующей по сортировке категории.

Код из интернета, который корректно вызывает next_post_link с сортировкой menu_order

add_filter( 'next_post_link', 'posts_link_attributes_next' );

function posts_link_attributes_next( $output ) {
	$next_post = get_adjacent_post(false, '', false);
	$title = '';
	if (!empty($next_post))
		$title = $next_post->post_title;

	$code = 'class="next-page" title="'.$title.'"';

	return str_replace( '<a href=', '<a ' . $code . ' href=', $output );
}

function my_previous_post_where() {

	global $post, $wpdb;

	return $wpdb->prepare( "WHERE p.menu_order < %s AND p.post_type = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type);
}
add_filter( 'get_previous_post_where', 'my_previous_post_where' );

function my_next_post_where() {

	global $post, $wpdb;

	return $wpdb->prepare( "WHERE p.menu_order > %s AND p.post_type = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type);
}
add_filter( 'get_next_post_where', 'my_next_post_where' );

function my_previous_post_sort() {

	return "ORDER BY p.menu_order desc LIMIT 1";
}
add_filter( 'get_previous_post_sort', 'my_previous_post_sort' );

function my_next_post_sort() {

	return "ORDER BY p.menu_order asc LIMIT 1";
}
add_filter( 'get_next_post_sort', 'my_next_post_sort' );



Вывод ссылки на следующий пост выглядит так

next_post_link( '%link', '<svg width="8" height="13" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 158.19 256"><polygon points="158.19 225.81 60.37 128 158.19 30.19 128 0 0 128 128 256 158.19 225.81"/></svg>', true, '' )



Либо предложите другие варианты решения, чтобы я мог ходить по постам в их menu_order порядке туда/сюда
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы