Ссылки "Следующая" и "Предыдущая" в произвольном типе записи в рамках одного термина таксономии

9 июл. 2012 г., 08:46:55
Просмотры: 15.4K
Голосов: 3

У меня есть произвольный тип записи name->('portfolio') с таксономией 'portfolio_category'.

Мне нужно добавить ссылки "Следующая" и "Предыдущая" на странице single-portfolio.php. При клике по этим ссылкам должен происходить переход к следующей или предыдущей записи того же типа в рамках того же термина таксономии.

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

Буду благодарен за любые предложения.

1
Комментарии

Могу порекомендовать следующий плагин, next-previous-post-link-plus-for-wordpress. Я использую его с версией 3.5.x без каких-либо проблем.

Nicolai Grossherr Nicolai Grossherr
2 июл. 2013 г. 16:53:36
Все ответы на вопрос 4
0

Функции 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> 
18 авг. 2014 г. 10:40:50
0

Параметр $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 );
10 авг. 2014 г. 18:52:55
1

Добавьте этот код в ваш файл single-cpt.php.

<?php previous_post_link('%link', 'Предыдущий в CPT', TRUE) ?>
<?php next_post_link('%link', 'Следующий в CPT', TRUE) ?>

Где cpt — это название вашего пользовательского типа записи.

14 окт. 2013 г. 18:45:08
Комментарии

Функции previous_post и next_post устарели начиная с версии 2.0.0, выпущенной в 2005 году

Pieter Goosen Pieter Goosen
10 авг. 2014 г. 18:39:58
3
-1

Попробуйте этот вариант с миниатюрами:

<?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 } ?>
1 мая 2014 г. 11:24:24
Комментарии

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

Mayeenul Islam Mayeenul Islam
1 мая 2014 г. 12:12:18

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

Pieter Goosen Pieter Goosen
10 авг. 2014 г. 18:39:11

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

Adriano Monecchi Adriano Monecchi
20 апр. 2017 г. 22:27:09