web-dev-qa-db-ja.com

カスタム投稿タイプのページ区切りが機能しない

何らかの理由で、previous_posts_linkとnext_posts_linkを使ってページ付けをすることができません。

これが私が持っているコードです...

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

<?php // The Query
$the_query = new WP_Query(
array(
    'post_type'=>'article',
    'posts_per_page'=>2,
    'orderby'=>'date',
    'paged'=>$paged
)
);

// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();

if($the_query->current_post == 0 && $paged == 1) :
?>
<article class="latest">
    <div class="summary">
        <h4>LATEST ARTICLE:</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, 'More'); ?>

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

        <div class="entry-topics"><?=get_the_term_list($post->ID , 'topics', '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, 'More'); ?>

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

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

<?php endwhile; ?>
<nav id="nav-below" class="navigation">
    <div class="alignleft"><?php previous_posts_link('« Newer Articles') ?></div>
    <div class="alignright"><?php next_posts_link('Older Articles »') ?></div>
</nav><!-- #nav-below -->

/ articles/page/2に行くと/ articles /へのリンクがあるはずですが、/ articles/pageから2ページへのリンクがありません。なぜでしょうか。

できれば助けてください...これは私を夢中にさせています。

ありがとうございます。マーク。

3
markstewie

グローバルな$wp_query変数のpaged属性が設定されている場合にのみ、ページ区切りは機能します。このグローバルに手動でクエリを保存することも、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変数に再度格納します。

4
rofflox

あなたのページスラッグは、カスタム投稿タイプ名と異なる必要があります