- Modificando el Loop de WordPress: query_posts()
- Modificando el Loop de WordPress: WP_Query()
- Modificando el Loop de WordPress: get_posts()
En post anteriores hablé de como personalizar el Loop de WordPress con query_posts y WP_Query. Este post aborda el método más sencillo y seguro para crear multiples bucles, get_posts().
Para crear un loop con este método se realiza de la siguiente manera
1 2 3 4 5 6 7 8 9 |
<?php global $post; $args = array('category' => -5); // Excluir categoria 5 $custom_posts = get_posts($args); foreach($custom_posts as $post) : setup_postdata($post); //código endforeach; ?> |
En este caso, el código crea un bucle con todos los posts salvo aquellos que tengan la categoría 5. Por supuesto, esto es uno de los parámetros que podemos usar para modificar loops. Este método usa los mismos parámetros que WP_Query y query_posts.
El método query_posts precisa usar un array para los parámetros. Un formato con múltiples parámetros tendría un aspecto como este
1 |
$args = array('category'=>-5,-8,-10, 'numberposts'=>10, 'order'=>'ASC'); |
Si te fijas, se usa numberposts en vez de posts_per_page para limitar el número de posts. Según el WP Codex, posts_per_page debería funcionar con get_posts pero en caso de que no funcione, usa numberposts. También está el parámetro showposts que también funciona bien con get_posts.
Un detalle importante a tener en cuenta es que la paginación no es posible con este método.
Los Loops por defecto y aquellos creados y modificados mediante query_posts y WP_Query soportan la navegación usando las etiquetas next_posts_link y previous_posts_link. Sin embargo, estas etiquetas no funcionan con get_posts, que muestra un simple conjunto estático de posts que encajen con los criterios establecidos.
Por tanto, si precisas navegar con el anterior y siguiente conjunto de posts deberías usar WP_Query para múltiples Loops.
¿Qué método usar?
Como este es el último método sobre modificar loops en WordPress está bien sacar conclusiones sobre cual usar. Podemos reducirlo a 3 puntos.
- Para modificar el loop por defecto, usa query_posts().
- En caso de modificar loops y/o crear varios, usa WP_Query()
- Para crear bucles adicionales y estáticos, usa get_posts().
Y hasta aquí el post de hoy, espero que os haya gustado. Que paséis un buen finde 🙂