Вставка изображения или рекламного скрипта после 3 постов с помощью цикла

7 авг. 2012 г., 21:10:15
Просмотры: 15.6K
Голосов: 4

Существует множество скриптов и хаков для вставки рекламы в середину поста (после '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 ЗДЕСЬ' два раза. Есть предложения по решению?

1
Комментарии

"Я вижу повторение 'INSERT ADSENSE CODE HERE' дважды" - возможно, из-за OR в условном операторе if ($post_counter == 2 || $post_counter == 3)? Или вы имеете в виду что-то другое?

Michael Michael
7 авг. 2012 г. 21:37:17
Все ответы на вопрос 2
5
17

вместо счетчика постов вы можете использовать переменную $wp_query->current_post - которая начинается с 0 для первого поста в цикле;

для вывода чего-либо после третьего поста, используйте, например, этот код перед строкой с endwhile;:

<?php if( $wp_query->current_post == 2 ) { ?>
СДЕЛАЙТЕ ЧТО-ТО
<?php } ?>
7 авг. 2012 г. 21:41:48
Комментарии

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

Vivek Sancheti Vivek Sancheti
20 февр. 2017 г. 10:55:09

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

Michael Michael
20 февр. 2017 г. 19:55:06

Можно ли сделать это случайным образом в цикле?

Muhammad Riyaz Muhammad Riyaz
12 июл. 2017 г. 13:14:12

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

Michael Michael
12 июл. 2017 г. 19:11:42

@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 } ?>

Muhammad Riyaz Muhammad Riyaz
16 июл. 2017 г. 09:55:09
0
<?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. Спасибо.

16 июл. 2017 г. 10:02:12