Пагинация с произвольным типом записей не работает

3 июл. 2011 г., 05:40:16
Просмотры: 24K
Голосов: 7

По какой-то причине у меня не работает пагинация при использовании previous_posts_link и next_posts_link.

Вот код, который у меня есть...

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>

<?php // Запрос
$the_query = new WP_Query(
array(
    'post_type'=>'article',
    'posts_per_page'=>2,
    'orderby'=>'date',
    'paged'=>$paged
)
);

// Цикл
while ( $the_query->have_posts() ) : $the_query->the_post();

if($the_query->current_post == 0 && $paged == 1) :
?>
<article class="latest">
    <div class="summary">
        <h4>ПОСЛЕДНЯЯ СТАТЬЯ:</h4>

        <h2><?=the_title(); ?></h2>
        <div class="entry-meta">
            <?php proagent_posted_on(); ?>
        </div><!-- .entry-meta -->
        <div class="entry-content">
            <?=get_the_content_limit(300, 'Подробнее'); ?>

        </div><!-- .entry-content -->

        <div class="entry-topics"><?=get_the_term_list($post->ID , 'topics', 'Темы: ',', '); ?></div>
    </div>
    <?=the_post_thumbnail('feature-post-thumbnail'); ?>
</article>

<?php else: ?>
<article class="previous">
    <?=the_post_thumbnail(); ?>
    <div class="summary">
        <h2><?=the_title(); ?></h2>
        <div class="entry-meta">
            <?php proagent_posted_on(); ?>
        </div><!-- .entry-meta -->
        <div class="entry-content">
            <?=get_the_content_limit(300, 'Подробнее'); ?>

        </div><!-- .entry-content -->

        <div class="entry-topics"><?=get_the_term_list($post->ID , 'topics', 'Темы: ',', '); ?></div>
    </div>
</article>
<?php endif; ?>

<?php endwhile; ?>
<nav id="nav-below" class="navigation">
    <div class="alignleft"><?php previous_posts_link('« Новые статьи') ?></div>
    <div class="alignright"><?php next_posts_link('Старые статьи »') ?></div>
</nav><!-- #nav-below -->

Также... только что заметил, что когда я перехожу на /articles/page/2, там есть ссылка на /articles/, как и должно быть, но на странице /articles/ нет ссылки на страницу 2.. ПОЧЕМУ?

ПОЖАЛУЙСТА, помогите, если можете... это сводит меня с ума.

Спасибо! Марк.

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

В каком контексте ты пытаешься это реализовать? Шаблон страницы? Шаблон категории? index.php? Это может иметь важные последствия для кода.

tollmanz tollmanz
3 июл. 2011 г. 07:35:16

Это шаблон категории для пользовательского типа записей. Я пытаюсь отобразить элементы моего пользовательского типа записей под названием "articles", и это главная страница статей. Я создал страницу под названием articles.php, в которой сейчас пишу код. Любая помощь была бы очень-очень-очень сильно оценена.

markstewie markstewie
3 июл. 2011 г. 12:14:19
Все ответы на вопрос 2
3
13

ваш ярлык страницы должен отличаться от названия типа записи (custom post type)

9 июн. 2016 г. 15:38:08
Комментарии

Пожалуйста, оставьте это в виде комментария или немного объясните, как это работает.

bravokeyl bravokeyl
9 июн. 2016 г. 15:39:06

Работает идеально, спасибо!

Rangel R. Morais Rangel R. Morais
2 мар. 2020 г. 21:15:34

slug страницы может совпадать с названием типа записи: https://wordpress.stackexchange.com/questions/135146/resolve-a-custom-post-type-name-vs-page-permalink-conflict-same-slug

Robin Huy Robin Huy
26 окт. 2022 г. 07:18:05
1

Пагинация работает только в том случае, если атрибут paged в глобальной переменной $wp_query установлен. Вы можете сохранить свой запрос вручную в этой глобальной переменной или просто использовать query_posts() вместо new WP_Query().

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $the_query = query_posts(
        array(
            'post_type'=>'article',
            'posts_per_page'=>2,
            'orderby'=>'date',
            'paged'=>$paged
        )
    );
    // ...
?>

Функция query_posts() сбросит существующий глобальный $wp_query, запустит новый WP_Query() и сохранит результат снова в глобальной переменной $wp_query.

3 июл. 2011 г. 17:35:14
Комментарии

Это старая запись. Для тех, кто читает этот ответ, обратите внимание, что есть новая информация на WordPress.org. https://developer.wordpress.org/reference/functions/query_posts/

Nora McDougall-Collins Nora McDougall-Collins
5 мая 2022 г. 18:58:07