• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:3件目以降出力されないので4件目から出力したい)

変数iの値が0から10未満の間に出力を制御する

このQ&Aのポイント
  • 変数iを使用して、0から10未満の範囲で出力を制御する方法について説明します。
  • ループ1では、変数iを0から10未満まで1ずつ増やしながら、条件文を使用して出力を制御しています。
  • ループ2では、変数iを0から4まで1ずつ増やしながら、条件文を使用して出力を制御しています。しかし、4件目からの出力が行われていないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

なるほど、そういうわけでしたか。 クエリを再発行「$wp_query->query($my_posts);」すると、先頭に戻るので、読み飛ばす処理が必要となっているようです。 単純に続きの処理をするのでしたら、ループ2は「if ($wp_query->have_posts()) :」からでよかったのではないでしょうか。 それはさておき。 5件おきにRSSを挟みたいのでしたら、こんな方法はどうでしょうか。 ループはひとつです。 $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 0; while ($wp_query->have_posts()):$wp_query->the_post(); /**** ▼1件分の投稿内容HTML ****/ $i++; if ($i==15) {//15件目で終了 break; } if ($i%5==0) {//5件ごとにRSSを挟む /**** RSSを出力 ****/ } endwhile; endif;

php_learn
質問者

お礼

元のコードでは<?php if (have_posts()) : ?>だったんですが、ページャーの関係上$wp_query = new WP_Query();を使ったんですが、それがまずかったんですかね… <?php if (have_posts()) : ?>だと最新の記事ではなくランダムに表示されたので特に気に留めなかったんですが。 RSSを間に挟む考えは自分の中になかったです。 とても参考になりました。ありがとうございます。

php_learn
質問者

補足

<!--ループ1--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 0; $i <= 10; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php /**** 投稿内容HTML ****/ ?> <ul class="newarrival_list"> <li class="custom"><a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> <!--リンククラスつきのタイトルを追加--> <div class="img-wrap2"> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> </div> <!--日付けを追加--> <div class="post-meta2"><div class="img-wrap3"> <?php the_time('Y/m/d'); ?></div> <!--リンククラス付きのカテゴリーを追加--> <?php $categories = get_the_category(); if ($categories) { echo '<ul>'; foreach ($categories as $category) { echo '<li class="cat1"' . $category->slug . '"><a href="' . esc_url(get_category_link($category->term_id)) . '">' . $category->name . '</a></li>'; } echo '</ul>'; } ?>    <!--リンククラス付きのコメント数を追加--> <?php $num_comments = get_comments_number(); if ($num_comments == 0) { $comments = __('No Comments'); } elseif ($num_comments > 1) { $comments = $num_comments . __(' Comments'); } else { $comments = __('1 Comment'); } $write_comments = '<span class="singlecomments"><a href="' . get_comments_link() . '">' . $comments . '</a></span>'; echo $write_comments; ?></div> <!--リンククラス付きのコメントの抜粋を追加--> <div class="img-wrap4"> <?php the_excerpt(); ?></div> <!--リンククラス付きの記事を読むを追加--> <div class="img-wrap5"> <a href="<?php the_permalink(); ?>">記事を読む</a> </div> </li></ul> <?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ1-->

その他の回答 (1)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.1

ループ1の「<?php if ($i >= 3) break; ?>」をやめて、 ループ2をなくしたらいいと思います。 3件目までのループと、 4件目以降のループに分けたいのですか。

php_learn
質問者

補足

考えている構想として記事とRSSを交互に挟みたいと考えてます。 1ページあたりの記事数は15件で、内5件ずつbreakで分けながら表示したいです。

関連するQ&A