Evita el contenido duplicado en tus Loops
Escrito el 30 Sep, 2009 por Alexis en Wordpress
Supongamos que en tu Index se encuentran dos Loops diferentes y no quieres que los contenidos se repitan, según el Loop con el que estés trabajando no podrás controlar las entradas duplicadas.
Pero con este pequeño hack dentro de tus Loops podrás evitar el contendido duplicado.
Veamos nuestro primer Loop de ejemplo con el hack ya implementado:
<?php $do_not_duplicate = array(); // como array antes del loop // 1. Loop query_posts('cat=1,2,3&showposts=5'); while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID; // recordar ID's en este loop // mostrar entradas ... the_title(); endwhile; ?>
Como Wordpress identifica cada entrada con una ID especifica, lo que hacemos es guardar cada ID en este primer Loop y luego la imprimiremos en el segundo Loop para evitar que se repita.
Ahora, nuestro segundo Loop puede lucir así:
<?php // 2. Loop query_posts( 'cat=4,5,6&showposts=15' ); while (have_posts()) : the_post(); if ( !in_array( $post->ID, $do_not_duplicate ) ) { // corroborar ID's // mostrar entradas... the_title(); } endwhile; ?>
Si el ID de la entrada coincide y existe en nuestro primer Loop no se mostrara, en caso contrario si.
Como alternativa tambien podemos usar la variable post__not_in que en resumen presta la misma funcionalidad a la hora de no repetir ID’s
Entonces nuestro segundo Loop va a lucir de la siguiente forma:
// otro loop sin entradas duplicadas query_posts( array( 'cat' => 456, 'post__not_in' => $do_not_duplicate ) ); while ( have_posts() ) : the_post(); // mostrar entradas... the_title(); endwhile; ?>
Con simples simples hacks vas evitar el contenido duplicado en tus Loops. lo cual es bueno para SEO y evitar problemas de validación en ciertos casos.
Visto en WpEngineer









nicolas venegas |12/11/2009| Site: Who knows?
gracias por la informacion. Pero una pregunta, ¿como hago que el titulo, o en otros casos, el contenido o el resumen de la entrada tenga link? en el ejemplo que pones, the_title(); no esta linkeado a alguna parte…
Entiendo el resto, pero eso no se hacerlo, y no he podido encontrar una explicacion en mis divageos por la red.
Un abrazo de antemano, y de nuevo muchas gracias.
Alexis |12/11/2009| Site: eliseos.net
Tenes que hacer uso de
Por Ejemplo:
Siempre dentro del Loop