WordPress 新着記事・人気記事一覧ループのn番目にランダム広告

2018年4月21日

新着記事・人気記事一覧ループのn番目にランダム広告

WordPressで作成してるサイトでサイドバーのウィジェットでよくある 新着記事一覧、うちの場合は「最近の新着・更新記事」などの一覧ループのn番目にランダム広告を挿入する方法。「人気の記事とページ」にもローテーションバナーを挿入。

WP_Queryのwhile文にカウントを加えるだけ

<ul>
<?php 
$number = 4; // n番目の数字(4番目なら4)
get_the_ID(); 
$args = array(
'orderby' => 'modified',
'order' => 'DESC',
'posts_per_page' => 6
);
$my_query = new WP_Query( $args );
while ( $my_query->have_posts() ) : $my_query->the_post();
$rankcount++; ?>
<?php if ($rankcount == $number ): ?>
<li>
ここに挿入したい処理
</li>
<?php endif; ?>
<li>
<a href="<?php the_permalink(); ?>">
<?php if( has_post_thumbnail() ): ?>
<?php the_post_thumbnail('thumb100'); ?>
<?php endif; ?>
<div>
<p><?php the_title(); ?></p>
</div>
</a>
</li>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
</ul>

上は勝手にありがちだと思ってる WP_Queryサブループから取得した新着更新記事一覧ループ。上の場合更新された順に6記事のサムネイルとタイトルを取得して、<li>要素にいれてループして一覧にしてる感じ。

3行目、$numbern番目を指定して入れとく。別にここで指定して入れておかなくてもいいんだけどね。

11行目から始まる while 新着更新記事一覧ループ に、whileの中一番最初12行目に1周毎に1増える $rankcount++ を今何番目の記事を表示するループか知るためにセットしておく。この辺りがミソかもしれない。

13行目 if ($rankcount == $number )$numberで指定したn番目(ここでは4番目)という条件で分岐、$rankcountだったらという条件ということ。ここに3行目で指定してる$numberのかわりに直に4と入力すれば3行目は当然いらない。

14行目から16行目、一覧リストだから<li>要素の中に表示したい処理を書く。ループで表示される<li>の上でn番目指定した挿入する<li>の表示処理をしているので、n番目指定した<li>の上に挿入したい<li>が一覧に挿入される。

ここでは4番目と指定してるので4番目の新着記事の上、3番目の新着記事の下の位置に挿入する<li>がリスト内に表示される。6記事表示の新着記事リストの3番目と4番目の記事の間に広告が表示されるということ。

ちなみに13行目から17行目の部分を切り取って、28行目 <?php endwhile; ?> の前、27行目との間に貼り付けるとn番目の新着記事の下に広告が表示されるということになる。ここでは4番目の記事と5番目の記事の間に表示される。

新着記事・人気記事一覧ループのn番目にランダム広告
新着記事・人気記事一覧ループのn番目にランダム広告

実際の最近の新着・更新記事一覧ウィジェットn番目ランダムバナー広告挿入機能付き全記事からの人気記事ランキングウィジェットn番目ランダムバナー広告挿入機能付きのPHPコードや作成方法は、長くなりそうなので改めて他の備忘録で。

追記 2018.04.30

最近の新着・更新記事一覧ウィジェットn番目ランダムバナー広告挿入機能付き」のウィジェットの作成方法、PHPコードについては下のページでまとめている。