Функция next_post_link() не работает для одиночной записи пользовательского типа поста

16 авг. 2013 г., 18:39:40
Просмотры: 18.8K
Голосов: 7

Я никак не могу заставить это работать - вот код в моем файле single-osu_work.php, который используется для этого типа поста, но я не могу заставить отображаться ссылки на следующую и предыдущую запись - видите ли вы проблему? Я пробовал размещать ссылки пагинации внутри цикла, но все равно ничего не работает.

Спасибо,

Osu

if (have_posts()) : while (have_posts()) : the_post(); ?>
    <article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
        <h1 id="mainheading"><?php the_title(); ?></h1>
        <?php the_content(); ?>
        <footer class="postmetadata">Дата: <?php the_date('Y'); ?></footer>
    </article>
    <?php endwhile;
else : ?>
    <article id="nada">
        <h2 id="mainheading">Ничего не найдено</h2>
        <p>Извините, но вы попали на страницу, которую невозможно найти.</p>
        <p>Пожалуйста, воспользуйтесь поиском или продолжите просмотр.</p>
        <?php echo get_search_form(); ?>
    </article>  
<?php endif; ?>

    <div class="next-posts"><?php next_post_link('%link', 'Новая запись &gt;', true) ?></div>
    <div class="prev-posts"><?php previous_post_link('%link', '&lt; Предыдущая запись', true) ?></div>
    <div class="clear">&nbsp;</div>
4
Комментарии

Они должны быть внутри цикла - вам стоит обновить свой код.

vancoder vancoder
16 авг. 2013 г. 19:40:42

К сожалению, я уже пробовал это, и это не работает - ссылки навигации не отображаются, только разметка div вокруг них...

Osu Osu
18 авг. 2013 г. 12:29:35

Обновление: я могу заставить это работать, если перенесу в цикл, но только с использованием next_post_link(), а не next_post_link('%link', 'Новая запись >', true) - есть идеи, почему так? Может потому что это пользовательский тип записи и нельзя переименовывать ссылки пагинации? Я бы хотел переименовать ссылку, если это возможно. Спасибо

Osu Osu
18 авг. 2013 г. 12:33:12

Просто удалите часть с "true". У меня это сработало.

Pete Pete
1 янв. 2017 г. 06:23:46
Все ответы на вопрос 3
1

Хорошо, я нашел решение, как сделать так, чтобы ссылки отображались, однако мне пришлось убрать аргумент 'true', чтобы навигация работала только между записями в одной категории/таксономии.

Правильно ли я понимаю, что нельзя ограничить связанные записи только теми, которые находятся в одной таксономии? Вот правильный код, и, как говорит vancoder, он должен находиться внутри цикла (я разместил его прямо перед endwhile;):

<div class="next-posts"><?php next_post_link('%link', 'Новая запись &gt;') ?></div>
<div class="prev-posts"><?php previous_post_link('%link', '&lt; Предыдущая запись') ?></div>

Поскольку это пользовательский тип записи с пользовательской таксономией, я предполагаю, что пагинация не работает, потому что Wordpress ищет 'категорию', как если бы это были обычные записи? Есть ли способ заставить это работать так, чтобы возвращались только записи типа Work в рамках моей пользовательской таксономии?

18 авг. 2013 г. 15:17:29
Комментарии

Да, эти функции работают только с таксономией 'category'. Я не знаю способа переопределить это поведение.

vancoder vancoder
19 авг. 2013 г. 09:22:43
0

Начиная с WordPress 3.8 вы можете указать таксономию в качестве пятого параметра. В вашем случае это будет выглядеть примерно так:

<?php previous_post_link( '%link', __( 'Предыдущая запись &gt;', 'sometextdomain' ), true, '', 'somecustomtaxonomy' ); ?>
<?php next_post_link( '%link', __( 'Следующая запись &gt;', 'sometextdomain' ), true, '', 'somecustomtaxonomy' ); ?>

Подробнее смотрите в Кодексе http://codex.wordpress.org/Function_Reference/previous_post_link

6 окт. 2014 г. 15:48:30
0

Убедитесь, что перед вызовом функций next_post_link() / previous_post_link() вы не выполняли пользовательский запрос wp_query и не сбрасывали запрос к значениям по умолчанию.

В таком случае используйте функцию wp_reset_query после работы с пользовательским wp_query.

2 сент. 2016 г. 13:05:10