:::: MENÚ ::::
Noticias con las etiquetas: WP_Query

Como insertar contenido cada número determinado de posts

Actualizado el 18 de Enero de 2014

desarrollo-wordpress

Como he dicho en otra ocasión, hacer un blog es como tener una casa en el campo, siempre hay cosa que hacer y mejorar. Por ello vamos a explicar cómo añadir elementos o hacer acciones cada número determinado de post/noticias, por ejemplo, añadir publicidad después del tercer post o añadirlo cada dos.

En muchas ocasiones cuando realizó trabajos para clientes me encuentro con un código parecido al siguiente para realizar la acción en un número determinado de post.

<?php if ( have_posts() ) : ?>

	<?php $num = 1; ?>

	<?php while ( have_posts() ) : the_post(); ?>
	
		<?php if ( $num == 3 ) : ?>
		
			// Lo que se muestra cada 3 posts
			
		<?php else : ?>
		
			// Lo que se muestra de forma normal.
			
		<?php endif; ?>
		
		<?php $num++; ?>		
	
	<?php endwhile; ?>
	
<?php endif; ?>

El código como podrás comprobar está bien, funciona correctamente, pero hay otra forma de hacerlo y que para mi es la correcta, y es usando current_post.

Cuando recorremos un Loop en realidad estamos recorriendo la variable global $wp_query, que contiene el objecto WP_Query, en el mismo tenemos varias propiedades y métodos que nos ayudan a la hora de desarrollar y también nos encontramos con la propiedad current_post, que nos devuelve el número de itineración en relación del post a actual.

Por ejemplo, si tenemos 10 post para mostrar y se va a visualizar el 3ª, curent_post nos devolverá un 2. Esto es así porque en informática el primer número es 0, no 1, por lo tanto el primer post es 0, el segundo 1, el tercero 2 y así sucesivamente.

Aplicando current_post al código anterior y llamando a $wp_query en primera instancia, nos quedará así:

<?php global $wp_query; ?>

<?php if ( have_posts() ) : ?>

	<?php while ( have_posts() ) : the_post(); ?>
	
		<?php if ( $wp_query->current_post == 2 ) : ?>
		
			// Lo que se muestra cuando es el 3ª posts
			
		<?php else : ?>
		
			// Lo que se muestra de forma normal.
			
		<?php endif; ?>		
	
	<?php endwhile; ?>
	
<?php endif; ?>

Con ello conseguimos añadir un nuevo elemento entre el tercer y cuarto post, pero si queremos que se repita el mismo elemento, por ejemplo publicidad cada dos post, es tan fácil como seguir los múltiplos de dos.

<?php global $wp_query; ?>

<?php if ( have_posts() ) : ?>

	<?php while ( have_posts() ) : the_post(); ?>
	
		<?php if ( ( $wp_query->current_post % 2 ) == 0 ) : ?>
		
			// Lo que se muestra cada 2 posts
			
		<?php else : ?>
		
			// Lo que se muestra de forma normal.
			
		<?php endif; ?>		
	
	<?php endwhile; ?>
	
<?php endif; ?>

Lo que realmente hacemos es comprobar que el número devuelto por current_post sea múltiple de la posición en la que queremos que aparezca, esto lo hacemos con el operador % que nos devuelve el resto de la división entre los dos números, si es cero, entonces es múltiplo y colocamos nuestro elemento/publicidad.

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn2Share on Tumblr0Pin on Pinterest0Email this to someone