previous_post_link() и next_post_link() с пользовательским типом записи?

13 дек. 2012 г., 22:47:01
Просмотры: 20K
Голосов: 7

Я нахожусь в файле single-work.php для пользовательского типа записи work, внутри цикла.

Пытаюсь создать две ссылки на предыдущую и следующую запись.

Использую этот код:

<?php previous_post_link(); ?>

и

<?php next_post_link(); ?>

Но ничего не отображается. Что я упускаю?

Вот мой код, очень простой:

<?php get_header(); ?>
<div class="full" >

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

    <?php next_post_link('%link', 'Следующая запись »'); ?>
<?php next_post_link('%link', 'Следующая запись »'); ?>

<?php endwhile; // конец цикла. ?>

</div><!--/full-->  
<?php get_footer(); ?>
0
Все ответы на вопрос 3
1

В вашем коде я вижу, что ссылки на следующую и предыдущую записи находятся внутри цикла while, чего быть не должно. Они должны располагаться за пределами цикла, вот так:

<?php get_header(); ?>
<div class="full" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php endwhile; // конец цикла. ?>
<?php next_post_link('%link', 'Следующая запись »'); ?>
<?php next_post_link('%link', 'Следующая запись »'); ?>
</div><!--/full-->  
<?php get_footer(); ?>

Или вы можете найти подробное объяснение здесь.

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

6 окт. 2013 г. 15:34:26
Комментарии

Пользователь 39075, пожалуйста, не отменяйте исправления грамматики, сделанные другими участниками. Здесь мы ценим качественный контент и редакторское качество. Спасибо. Подробнее смотрите в [справке].

brasofilo brasofilo
6 окт. 2013 г. 16:18:16
0

Прочитайте документацию.

Эта функция не будет работать (завершится молчаливым сбоем), если в вашем php.ini включен mysql.trace_mode. Если вы не можете редактировать этот файл, попробуйте добавить

ini_set( 'mysql.trace_mode', 0 );

в файл functions.php вашей темы.

Это может решить вашу проблему, как решило мою.

7 мар. 2018 г. 21:13:51
5

Функции правильные; задайте параметры

<?php next_post_link('%link', 'Следующая запись »'); ?>

<?php next_post_link('%link', 'Следующая запись »'); ?>

Что ж, не видя ваш код, сложно сказать почему. Есть ли какие-то ошибки или предупреждения PHP?

Обновление

Небольшой пример

<?php query_posts( array( 'post_type' => 'page', 'post_status' => 'publish' ) ) ?>
<?php if ( have_posts() ) : ?>

    <?php while ( have_posts() ) : the_post() ?>
        <!-- делаем что-то -->

    <div id="nav-single">
        <div class="left"><?php previous_post_link(); ?></div>
        <div class="right"><?php next_post_link(); ?></div>
    </div>

    <?php endwhile; // конец цикла. ?>
    <?php wp_reset_query(); ?>

<?php else : ?>

    <!-- делаем что-то другое здесь -->

<?php endif ?>
13 дек. 2012 г. 22:50:54
Комментарии

Эти параметры необязательные, их указание ничем не помогает. Нет никаких ошибок PHP или чего-то еще, поэтому мне сложно разобраться, просто молчание..

wesbos wesbos
13 дек. 2012 г. 22:52:42

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

bueltge bueltge
13 дек. 2012 г. 22:55:52

Я обновлю свой код...

wesbos wesbos
13 дек. 2012 г. 22:57:23

И CPT находится внутри стандартного цикла? В вашем коде стандартный цикл, а не несколько для CPT. Но да, можно подключить CPT внутри цикла и добавить CPT.

bueltge bueltge
13 дек. 2012 г. 23:08:15

Что если я хочу получить предыдущую/следующую запись из той же категории? Что мне нужно сделать с кодом выше?

Jornes Jornes
1 окт. 2022 г. 07:34:05