Навигация Следующий/Предыдущий для Произвольного Типа Записей?
У меня есть произвольный тип записей (custom post type) под названием portfolio. Мне нужны ссылки предыдущий/следующий БЕЗ использования плагина. Есть ли у кого-нибудь решение?
Пример записи: http://themeforward.com/demo2/archives/portfolio/boat
<?php get_header(); ?>
<!-- Начало обертки -->
<div class="clear">
<div id="full_container">
<div id="content2">
<div id="content">
<!-- Получаем записи -->
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
<!-- Заголовок записи -->
<h1>
<?php the_title(); ?>
</h1>
<!-- Запись -->
<?php the_content(); ?>
<!-- Метки -->
<h3 class="tags">
<?php the_tags('Метки ',' / ','<br />'); ?>
</h3>
<!-- Конец обертки -->
</div>
<!-- Следующие/Предыдущие записи -->
<div class="mp_archive2">
<div id="more_posts">
<div class="oe">
<?php previous_post_link('%link', '« Предыдущая запись', TRUE); ?>
</div>
<div class="re">
<?php next_post_link('%link', 'Следующая запись »', TRUE); ?>
</div>
</div>
</div>
<?php endwhile; else: ?>
<p>Подходящие записи не найдены.</p>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>

<?php
$prev_post = get_previous_post();
if($prev_post) {
$prev_title = strip_tags(str_replace('"', '', $prev_post->post_title));
echo "\t" . '<a rel="prev" href="' . get_permalink($prev_post->ID) . '" title="' . $prev_title. '" class=" ">« Предыдущая запись<br /><strong>"'. $prev_title . '"</strong></a>' . "\n";
}
$next_post = get_next_post();
if($next_post) {
$next_title = strip_tags(str_replace('"', '', $next_post->post_title));
echo "\t" . '<a rel="next" href="' . get_permalink($next_post->ID) . '" title="' . $next_title. '" class=" ">Следующая запись »<br /><strong>"'. $next_title . '"</strong></a>' . "\n";
}
?>

Если вам нужны ссылки "следующая/предыдущая" для одиночных записей, есть встроенные функции next_post_link
и соответствующая previous_post_link
, обе из которых следует использовать внутри цикла.
Для архивов используйте next_posts_link
и previous_posts_link
.
Все эти функции отлично работают с пользовательскими типами записей.

Хорошо. Без просмотра вашего кода сложно сказать почему. Есть ли какие-либо ошибки или предупреждения PHP? У вас есть несколько записей, для которых функции должны получать ссылки?

Используйте это <?php next_post_link('%link', 'Next post »'); ?>
и <?php next_post_link('%link', 'Next post »'); ?>

Это работает с пользовательскими типами записей, но как насчёт той же таксономии текущей записи?

@jepser (Прихожу с опозданием на вечеринку) Вам нужно указать таксономию для использования в качестве 5-го аргумента. Если вы передадите только первые 3 аргумента и включите третий, чтобы оставаться в той же таксономии, скорее всего, это не сработает, так как таксономия по умолчанию — это category
(которой, вероятно, нет у вашего CPT). Смотрите связанные статьи кодекса в ответе.

Вы можете использовать функцию get_adjacent_post
для получения объекта следующей или предыдущей записи в цикле.
Вы можете изменить третий параметр на true или false, чтобы получить следующий или предыдущий объект записи. get_adjacent_post( false, '', true);
С этими знаниями мы можем использовать функцию get_the_permalink
для получения URL записей и создания собственных ссылок, без необходимости удалять лишние элементы, которые WordPress добавляет при других методах.
Этот метод особенно полезен, если вы хотите самостоятельно стилизовать гиперссылки и иметь полный контроль над их форматированием.
<?php
$next_post = get_adjacent_post( false, '', false);
$next_post_url = get_the_permalink($next_post);
$previous_post = get_adjacent_post( false, '', true);
$previous_post_url = get_the_permalink($previous_post);
?>
<a href="<?php echo $next_post_url;?>">Следующая запись</a>
<a href="<?php echo $previous_post_url;?>">Предыдущая запись</a>

Кроме того, если вам нужен бесконечный цикл постов, вы можете использовать это: https://wplancer.com/infinite-next-and-previous-post-looping-in-wordpress/
