Вставка изображения или рекламного скрипта после 3 постов с помощью цикла
Существует множество скриптов и хаков для вставки рекламы в середину поста (после 'x' количества абзацев), но я не нашел достаточно хорошего решения для вставки после определенного количества постов.
Вот скрипт, который близок к нужному функционалу:
<?php $post_counter=0; ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php require('post.php'); ?>
<?php
$post_counter++;
if ($post_counter == 2 || $post_counter == 3) { ?>
ВСТАВЬТЕ КОД ADSENSE ЗДЕСЬ
<?php } ?>
<?php endwhile; ?>
Взято из этого источника. Но мой index.php использует другой подход:
<?php
$page_num = $paged;
if ($pagenum='') $pagenum =1;
query_posts('cat=-3&showposts=6&paged='.$page_num); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part('includes/index-loop'); ?>
<?php endwhile; wp_reset_postdata(); wp_reset_query(); ?>
<div class="clear"></div>
<?php else : ?>
<?php endif; ?>
Я попытался добавить этот код:
<?php
$post_counter++;
if ($post_counter == 2 || $post_counter == 3) { ?>
ВСТАВЬТЕ КОД ADSENSE ЗДЕСЬ
<?php } ?>
перед endwhile, но получаю дублирование 'ВСТАВЬТЕ КОД ADSENSE ЗДЕСЬ' два раза. Есть предложения по решению?

вместо счетчика постов вы можете использовать переменную $wp_query->current_post
- которая начинается с 0 для первого поста в цикле;
для вывода чего-либо после третьего поста, используйте, например, этот код перед строкой с endwhile;
:
<?php if( $wp_query->current_post == 2 ) { ?>
СДЕЛАЙТЕ ЧТО-ТО
<?php } ?>

нужно ли помещать это в шаблон отдельной записи/страницы? если да, то где именно?

код должен быть добавлен в цикл шаблона index. детали зависят от используемой темы.

@MuhammadRiyaz - в целом да, однако код будет сложнее, потому что вам нужно получить случайное значение до цикла, а затем использовать его вместо числа в условии if. Рекомендуется создать собственный вопрос, чтобы получить подробный ответ.

@Michael - Спасибо за ответ. Я нашел решение. <?php $ad_positions = array(2,3,4,5,6); // массив предустановленных возможных позиций для рекламы $numb = $ad_positions[rand(0, count($ad_positions) - 1)];
if( $wp_query->current_post == $numb ) { ?> СДЕЛАТЬ ЧТО-ТО <?php } ?>

<?php $ad_positions = array(2,3,4,5,6); // массив предустановленных возможных позиций для рекламы
$numb = $ad_positions[rand(0, count($ad_positions) - 1)];
if( $wp_query->current_post == $numb ) { ?>
СДЕЛАТЬ ЧТО-ТО
<?php } ?>
Если кому-то нужно показывать рекламу в случайных позициях, приведённый выше код поможет в цикле WordPress. Спасибо.
