いくつかのカスタム投稿をページ付けする必要があります。理由はわかりませんが、次のページに進むと404が表示されます。これが私のコードです。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts( array( 'post_type' => 's_stories', 'posts_per_page' => 4 , 'paged'=>$paged) );
if (have_posts()){
while (have_posts()) { the_post(); ?>
<div class="post">
<h2 class="title"><a href="<?php echo get_permalink($post->ID); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
</div> <!-- end post -->
<div class="clear"></div>
<?php } } ?>
<div class="paging">
<div style="float:left; font-weight:bold"><?php next_posts_link('« Previous Story') ?></div>
<div style="float:right; font-weight:bold"><?php previous_posts_link('Next Story »') ?></div>
</div>
「paged」値と投稿ナビゲーションが表示されました。何か考えていることがあります。
ありがとう:)
query_posts
は使用しないでください。これはあなたがしたときに何が起こるかの典型的な例です:)
基本的に、WordPressはURLを受け取ると、これをクエリとして解釈します - 次にデータベースにクエリして結果があればそれを探し、適切なテンプレート(結果がない場合は404.phpなど)を提供します。
テンプレートページにたどり着いた場合 - そのクエリを破棄し、新しいクエリを開始するように指示されます(これは無駄です)。そしてページネーションを壊します。
基本的にページネーションは現在のURLにpaged
クエリ変数を追加します - この新しいURLは(例えば2ページ目に連れて行ってくれるでしょう) - 2ページ目を受け取るためのクエリの基礎を形成します結果は破棄され、query_posts
で新しいクエリが開始されます。最終的には、不要なクエリが実行され、結果が表示されないため、404テンプレートが提供され、テンプレートはあなたのquery_posts
には決して届きません。
上記のリンクされた投稿を見て、query_post
に代わるものを見つけてください。ただし、これが 'メインクエリ'(受信したURLに基づくクエリ)なので、 pre_get_posts
.
これを試して...
<?php
global $paged; global $wp_query;
$temp = $wp_query; $wp_query= null; $wp_query = new WP_Query();
$wp_query->query('showposts=XX&post_type=POST_TYPE_NAME'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
// do your content output here...
<?php endwhile; ?>
// do pagination here...
<?php $wp_query = null; $wp_query = $temp;?>
query_posts()
は一般的に使われるべきではありません、そして特にあなたが改ページをめちゃくちゃにしようとしているならば。
ページ付けと404ロジックの両方がテンプレートファイル(とその中のquery_posts()
)がロードを開始する前にさえ起こります。
ページのメインクエリを微調整するための最良の選択肢の一つは、 pre_get_posts
フックを使うことです。