PHP初心者です。
Wordpressでブログページを作成中なのですが、どうしても分からないことがあってお伺いしたいです。
ページネーションの実装にあたって、表示する記事に空のループが出現してしまうので、その空のループを表示しないようにしたいです。
プラグインのPageNaviを使用しページネーションを表示させようとしたところ、
1)2ページ目が404になってしまう
2)コードを修正し、404は回避したものの2ページ目と1ページ目が同じになる
現在)さらに修正し、以下のコードになりページネーションは機能したが空のループが出現してしまう
という順に問題が発生しました。
管理画面およびposts_per_pageで、1ページに表示する件数を3件にしているのですが、
一覧に表示される件数が3件を下回った場合、記事を表示する予定である部分が空のループで表示されてしまいます。
例えば、1件しか表示する記事が無かった場合、余った2件が中身が無いのに記事として表示されてしまいます。
↑汚い画像で申し訳ないです。
実際にカテゴリページで表示した場合、表示するものが2件しかないと、破線赤丸で示したように、最後の1つ分がテキストの入っていない空のループで出てきてしまいます。
この部分を非表示にしたいです。
search.phpとindex.php(トップページはfront-page.phpを使用)に記述したコードは以下の通りです。
検索して見様見真似で記述したのですが…。
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $posts_per_page = 3; //1ページの中に出力する記事数を定義 query_posts($query_string . '&posts_per_page='.$posts_per_page.'&paged=' . $paged); $args = array( 'posts_per_page' => $posts_per_page, //1ページの中に出力する記事数(上の変数で定義する) 'paged' => $paged, 'order' => 'DESC', ); ?> <?php $my_query_sample = new WP_Query( $args ); ?> <?php if ($my_query_sample->have_posts()): ?> <?php while ( $my_query_sample->have_posts() ) : $my_query_sample->the_post(); ?> <?php the_post(); //データ1件分を取り出す ?> <!--////////// Blog //////////--> ここはブログのループ <!--////////// END Blog //////////--> <?php endwhile; //ループ終了 ?> <?php else: //当てはまる記事が無い場合 ?> <div class="order_blog notopic_text"> <div class="text"> <h3 class="color_h3">No article</h3> <p>お探しの検索結果は見つかりませんでした</p> </div> </div> <?php endif; //条件分岐終了 ?> <!--////////// 中略 //////////--> <hr> <!--/// ページ送り ///--> <?php if(function_exists('wp_pagenavi')) {wp_pagenavi();} ?>
posts_per_pageがダメなのか?と思い、
$posts_per_page = 3; //1ページの中に出力する記事数を定義
と
'posts_per_page' => $posts_per_page, //1ページの中に出力する記事数(上の変数で定義する)
の部分を消してみたところ、1回は何故か空ループが消え上手く表示されたのですが、少し時間が経って確認したところ、
また空のループが表示される状態に戻りました。
その後何度上書きしキャッシュを削除して確認しても、空のループは表示したままです。
いろいろ調べてみたのですが、当方PHPのコーディングは初めてで、どうしても解決方法を見つけることが出来なかったため、ご指導いただけますと幸いです。
お見苦しい質問内容で申し訳ありませんが、よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー