У меня есть следующий цикл в моей теме 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' );
?>
Можете ли вы, ребята, помочь мне дальше?
Поскольку вы используете это в цикле, вам не нужен глобальный $ 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();
В противном случае удалите эту строку и измените все экземпляры на эту функцию.
Вы были закрыты для этого, но я думаю, что вам нужно поставить $i
внутри функции:
function show_attachments(){
$i = 0;
global $post;
...