Вставьте рекламные объявления Google после того, как в посте WordPress определено количество элементов

У меня есть следующий цикл в моей теме WordPress, которая показывает все прикрепленные изображения в сообщении. То, что я хочу сделать, это вставить рекламный код Google после 3 вложений в сообщении.

      <?php function show_attachments(){
global $post;
while( have_posts () ){
the_post();
$post_id = $post -> ID
?>
<div class="featimg"   >
<div class="img">
<?php
$img_src = wp_get_attachment_image_src(  $post_id  , 'full' );
echo '<img src="'.$img_src[0].'" alt="" />';


?>
</div>
</div>
<?php
}
}
$layout = new LBSidebarResizer( 'attachment' );
$layout -> render_frontend( 'show_attachments' );
?>

Я думаю, что я должен сделать что-то похожее на это:

      <?php
$i = 0;
function show_attachments(){
global $post;
while( have_posts () ){
$i++;
the_post();
if ($i == 3){
echo 'google ads code here';
};
$post_id = $post -> ID
?>
<div class="featimg"   >
<div class="img">
<?php
$img_src = wp_get_attachment_image_src(  $post_id  , 'full' );
echo '<img src="'.$img_src[0].'" alt="" />';


?>
</div>
</div>
<?php
}
}
$layout = new LBSidebarResizer( 'attachment' );
$layout -> render_frontend( 'show_attachments' );
?>

Можете ли вы, ребята, помочь мне дальше?

0

Решение

Поскольку вы используете это в цикле, вам не нужен глобальный $ post для получения идентификатора поста. Для этого есть встроенная функция:

get_the_ID();

С вашим оператором «if» вы получите только одно эхо, потому что вы видите, если $ i == 3, что произойдет только один раз. Это может работать в вашей ситуации большую часть времени, но если у вас есть шесть или девять вложений и вы хотите вставить код после, это не сработает.

Я бы порекомендовал использовать вместо этого оператор модуля и проверить, $ i% 3 == 0. Итак, если $ i, деленное на 3, не имеет остатка, то выведите код.

Вот что я предлагаю:

function show_attachments(){
$i = 1;
global $post;
while( have_posts () ){
the_post();
if ($i % 3 == 0){
echo 'google ads code here';
};
...
$i++;
}

Если вы хотите сохранить переменную $ post_id:

$post_id = get_the_ID();

В противном случае удалите эту строку и измените все экземпляры на эту функцию.

1

Другие решения

Вы были закрыты для этого, но я думаю, что вам нужно поставить $i внутри функции:

function show_attachments(){
$i = 0;
global $post;
...
0

По вопросам рекламы [email protected]