【WordPress】ページ送りで2ページ目以降が表示されない時
ご無沙汰しております!
最近めっきりブログを書く気力がなくなっていましたが、
久しぶりに自分の箱庭を整えたくなったので書くことにしました。
WordPressオリジナルテーマ作成時のページ送りについて(特に一覧ページのページ送り)
これは調べていると一度ならず二度、三度とハマりやすいポイントで、
私も今回ハマって二度目 なんでーーーーと悶々としながら調べた先に、
やっと、でも結構あっけなく解決に至りました。
ページ送りとは・・・
ブログは何個も記事があるので、
個別ページの下には「前の記事へ」とか「次の記事へ」とかのリンク
一覧ページ(ブログトップやアーカイブページ)には「前のページ」「次のページ」とかのリンク
を設置することが多々あります。
個別ページ:single.phpの場合
これは割とスッと動いてくれます。
一覧ページ:home.php(front-page.php) archive.phpの場合
これは最後、この方の記事にたどり着いて解決しました。
記事一覧取得コードに下記を加えることで解決しました。
’paged’ => get_query_var(‘paged’)
最初のループコード
<?php $the_query = new WP_Query( array( //サブループの条件設定 'post_type' => 'post', //投稿を表示 'posts_per_page' => 10, //10件表示 ) ); ?> <?php if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> ループする内容 <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>
修正後のコード
<?php $the_query = new WP_Query( array( //サブループの条件設定 'post_type' => 'post', //投稿を表示 'posts_per_page' => 10, //10件表示 'paged' => get_query_var('paged') //これを加えました★) ); ?> <?php if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> ループする内容 <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>
変数[paged]は「今、何ページ目?」という値を指定するものです。
この値が指定されていないことで、ページ送りの2ページ以降でも「1ページ目に該当する内容」が表示されていた可能性があります。
こちらのページでも、詳細に説明してくださっています。
もしもページ送りで迷っていたら、記事の取得条件を再度、見直してみてください。
解決しますように!!!