Ссылки "Следующая" и "Предыдущая" в произвольном типе записи в рамках одного термина таксономии
У меня есть произвольный тип записи name->('portfolio')
с таксономией 'portfolio_category'
.
Мне нужно добавить ссылки "Следующая" и "Предыдущая" на странице single-portfolio.php. При клике по этим ссылкам должен происходить переход к следующей или предыдущей записи того же типа в рамках того же термина таксономии.
Я пробовал использовать next_post_link()
и previous_post_link()
, но эти функции, похоже, работают только для обычных записей, а не для произвольных типов записей.
Буду благодарен за любые предложения.

Функции previous_post_link() и next_post_link() прекрасно работают с пользовательскими типами записей. Вам нужно вставить этот код в ваш файл single-customposttype.php (в вашем случае это single-portfolio.php):
<div class="previous-post-link">
<?php previous_post_link('%link', '<< Предыдущая запись', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>
</div>
<div class="next-post-link">
<?php next_post_link('%link', 'Следующая запись >>', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>
</div>

Параметр $taxonomy
для функций next_post_link
и previous_post_link
был добавлен в WordPress начиная с версии 3.8.
Когда параметр $in_same_term
установлен в true, необходимо указать параметр $taxonomy
с нужной таксономией. По умолчанию он установлен в category
. Помните, что post_format
также является таксономией.
Пример:
next_post_link( '%link', 'Следующий пост в категории', TRUE, ' ', 'post_format' );
Обратите внимание, что не следует использовать функции next_post
и previous_post
. Они устарели начиная с WordPress версии 2.0.0. Смотрите wp-includes/deprecated.php#L121 и wp-includes/deprecated.php#L158.
РЕДАКТИРОВАНИЕ
Ссылки на одиночные посты автоматически переключаются между постами того же типа записи, так как тип текущей записи используется для получения соседних постов. Проверьте исходный код функции get_adjacent_post()
, которая используется для получения ссылок на следующий и предыдущий посты. Особое внимание обратите на строку 1550 (актуально для версии 4.1):
1550 $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms );

Попробуйте этот вариант с миниатюрами:
<?php $prevPost = get_previous_post(); if($prevPost) { ?>
<li class="previous">
<?php $prevthumbnail = get_the_post_thumbnail($prevPost->ID, array(80,80) ); ?>
<?php previous_post_link('%link', $prevthumbnail . '<strong>Предыдущая</strong> <span>%title</span>', TRUE); ?>
</li>
<?php } $nextPost = get_next_post(); if($nextPost) { ?>
<li class="next">
<?php $nextthumbnail = get_the_post_thumbnail($nextPost->ID, array(80,80) ); ?>
<?php next_post_link('%link', $nextthumbnail . '<strong>Следующая</strong> <span>%title</span>', TRUE); ?>
</li>
<?php } ?>

Ответ, состоящий только из кода — это худший вариант. Попробуйте добавить немного пояснений или описания, отредактировав его. :)

Кажется, вы не совсем поняли вопрос. Автор не просил ссылки с миниатюрами. Кроме того, ответы, состоящие только из кода, не считаются хорошими.

Спасибо, это мне очень помогло. С небольшими корректировками CSS я получил довольно удобную навигацию. Я установил фиксированное положение для навигации "предыдущий/следующий", а также абсолютное позиционирование для каждого элемента, чтобы они отображались по левую/правую сторону экрана.
