- Modificando el Loop de WordPress: query_posts()
- Modificando el Loop de WordPress: WP_Query()
- Modificando el Loop de WordPress: get_posts()
En el post anterior expliqué que había tres formas de modificar el Loop de WordPress. Este tutorial estará enfocado en el uso de la función WP_Query.
A diferencia de query_posts, está pensado para usarse en uno o varios Loops. Sin embargo, el uso es muy similar.
1 2 3 4 5 6 7 8 9 |
<?php $query = new WP_Query('cat=-4'); // Excluimos la categoría 4 while($query ->have_posts()) : $query ->the_post(); //Código endwhile; wp_reset_postdata(); // Resetea la consulta ?> |
También acepta los mismos parámetros que query_posts como modificar número de posts, incluír/excluír categorías, el orden de posts… Además, es fácil personalizar el Loop cambiando simplemente el parámetro:
1 2 3 |
$query = new WP_Query('cat=-4,-5,-9'); // Excluír varias categorías $query = new WP_Query('posts_per_page=7'); // Indicar el número de posts por página $query = new WP_Query('order=ASC'); //Mostrar en orden ascendente los posts |
Con una sintáxis similar a query_posts y get_posts se pueden combinar varios parámetros
1 |
$query = new WP_Query('cat=-4,-5,-9&posts_per_page=7&order=ASC'); |
No es preciso introducir los parámetros en un orden particular y tampoco es preciso concatenarlos con la global $query_string.
Manejando varios loops
Como expliqué al principio, WP_Query está pensado para uno o varios loops. Se puede usar para crear y customizar varios loops.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php // Loop 1 $query_1 = new WP_Query('cat=-2'); // Excluír la categoría 2 while($query_1->have_posts()) : $query_1 ->the_post(); //Código endwhile; wp_reset_postdata(); // Resetea la query // Loop 2 $query_2 = new WP_Query('cat=5, 9, 2'); Incluimos 3 categorías while($query_2->have_posts()) : $query_2->the_post(); //Código endwhile; wp_reset_postdata(); // Resetea la query // Loop 3 $query_3 = new WP_Query('cat=6&posts_per_page=5'); //Excluimos la categoría 6 y que muestre 5 posts while($query_3->have_posts()) : $query_3->the_post(); //Código endwhile; wp_reset_postdata(); // Resetea la query ?> |
Cada unos de los loops puede colocarse en cualquier parte de la plantilla, no es necesario tener un orden secuencial. Por ejemplo, se puede colocar un loop en el sidebar, otro en el footer, otro en el header etc. Además, con la ventaja de tener varios parámetros disponibles puedes sacar cualquier tipo de información que necesites.
Y aquí termina la explicación, espero que le podáis sacar el máximo partido. A seguir picando y buen finde 🙂