Insertar imagen o script de anuncio después de 3 publicaciones usando el loop

7 ago 2012, 21:10:15
Vistas: 15.6K
Votos: 4

Existen muchos scripts/hacks para insertar anuncios en medio de las publicaciones (después de 'x' número de párrafos), pero no he encontrado uno lo suficientemente bueno que pueda hacer lo mencionado.

Este es el script que se acerca más,

<?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) { ?>
INSERTAR CÓDIGO DE ADSENSE AQUÍ
<?php } ?>
<?php endwhile; ?>

Tomado de aquí. Pero mi index.php usa esto en su lugar:

<?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; ?>

Intenté insertar

<?php
$post_counter++;
if ($post_counter == 2 || $post_counter == 3) { ?>
INSERTAR CÓDIGO DE ADSENSE AQUÍ
<?php } ?>

antes de endwhile, pero veo una repetición de 'INSERTAR CÓDIGO DE ADSENSE AQUÍ' dos veces. ¿Alguna sugerencia?

1
Comentarios

"Veo una repetición de 'INSERT ADSENSE CODE HERE' dos veces" - ¿posiblemente debido al OR en la declaración condicional if ($post_counter == 2 || $post_counter == 3)? ¿o te refieres a algo más?

Michael Michael
7 ago 2012 21:37:17
Todas las respuestas a la pregunta 2
5
17

en lugar de un contador de publicaciones, podrías usar la variable $wp_query->current_post - que comienza con 0 para la primera publicación en el bucle;

para mostrar algo después de la tercera publicación, usa por ejemplo esto antes de la línea con endwhile;:

<?php if( $wp_query->current_post == 2 ) { ?>
HACER ALGO
<?php } ?>
7 ago 2012 21:41:48
Comentarios

¿Necesito colocarlo en la plantilla de publicación/página individual? Si es así, ¿dónde exactamente?

Vivek Sancheti Vivek Sancheti
20 feb 2017 10:55:09

El código debe ir dentro del loop de la plantilla del índice. Los detalles dependen del tema que estés utilizando.

Michael Michael
20 feb 2017 19:55:06

¿Podemos hacer esto de forma aleatoria dentro del loop?

Muhammad Riyaz Muhammad Riyaz
12 jul 2017 13:14:12

@MuhammadRiyaz - generalmente sí, sin embargo, el código sería más complejo porque necesitas obtener el valor aleatorio antes del bucle y luego usarlo en lugar del número en la sentencia if. Considera crear tu propia pregunta para obtener una respuesta detallada.

Michael Michael
12 jul 2017 19:11:42

@Michael - Gracias por responder. Encontré una solución. <?php $ad_positions = array(2,3,4,5,6); // array de posiciones de anuncios predefinidas posibles $numb = $ad_positions[rand(0, count($ad_positions) - 1)];

if( $wp_query->current_post == $numb ) { ?> HACER ALGO <?php } ?>

Muhammad Riyaz Muhammad Riyaz
16 jul 2017 09:55:09
0
<?php $ad_positions = array(2,3,4,5,6); // arreglo de posiciones predefinidas posibles para anuncios
$numb = $ad_positions[rand(0, count($ad_positions) - 1)]; 

if( $wp_query->current_post == $numb ) { ?> 
HACER ALGO 
<?php } ?>

Si alguien necesita mostrar un anuncio en posiciones aleatorias, el código anterior será útil dentro del loop de WordPress. Gracias.

16 jul 2017 10:02:12