2015-05-11 3 views
1

В файле single.php wordpress есть раздел навигации для ссылки на следующий или предыдущий пост. Это код, который я использовал для предыдущего/следующего сообщения. Я хотел бы, чтобы эти ссылки открываются одни и те же сообщения категории (в моем примере ниже «2» это идентификатор категории):Предыдущая и следующая ссылка в wordpress для той же категории

<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE, '2'); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE, '2'); ?> 

Почему он не работает?

ответ

3

Четвертый параметр предназначен для категорий, которые вы хотите исключить, поэтому в этом случае вы исключаете категорию 2.

Удаление четвертый параметр должен сделать трюк:

<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE); ?> 

Ссылка: next_post_link и previous_post_link.


Update

Получить смежные размещать ссылки только на один подкатегорию не так просто, но вы можете применить метод, описанный в this answer, используя фильтр wp_get_object_terms ссылаться только на категорию хотел.

Таким образом, имея идентификатор категории, которую вы хотите (в данном случае я использую 2 как ваш пример), это было бы код положить в single.php файл:

<?php 
    // set the category ID wanted 
    $GLOBALS['just_this_category'] = 2; 
    // add filter for navigation links 
    add_filter('wp_get_object_terms', 'my_custom_post_navigation'); ?> 
?> 

<!-- navigation links --> 
<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE); ?> 

<?php // remove filter just after navigation links 
    remove_filter('wp_get_object_terms', 'my_custom_post_navigation'); 
?> 

И эта функция фильтра для functions.php файла:

function my_custom_post_navigation($terms){ 
    global $just_this_category; 

    if(array_search($just_this_category, (array)$terms) !== FALSE) 

     return array($just_this_category); 

    return array(); 

} 

Как вы можете видеть, что я использовал глобальную переменную $just_this_category передать идентификатор категории функции фильтра.

Очевидно, что для каждого поста вам необходимо установить другой идентификатор категории (вы можете получить его автоматически, но как зависит от того, как вы управляете своими категориями).

+0

Но это все равно не работает. Он показывает все сообщения, а не только сообщения одной категории. –

+2

Эти должности относятся к нескольким категориям? Как говорится в ссылке: «Если сообщение находится как в родительской, так и в подкатегории, или более одного срока, следующая ссылка для публикации приведет к следующему сообщению в любом из этих терминов». – d79

+0

Вы правы. Они принадлежат к нескольким категориям. Есть ли возможность связать только одну подкатегорию? –

Смежные вопросы