En otros artículos mostré cómo crear shortcodes en WordPress, hoy veremos cómo mostrar todos los post de una categoría wordpress dada como parámetro al shortcode.



Crear el shortcode

Editamos el archivo functions.php de nuestro tema y añadimos el siguiente código:


function show_category_posts( $atts ){
        extract(shortcode_atts(array(
                'cat'=> ''
        ), $atts));
        query_posts('cat='.$cat.'&orderby;=dateℴ=ASC&posts;_per_page=-1');
        if ( have_posts() ){
                $content = '

<ul>
  ';
                  while ( have_posts() ){
                          the_post();
                          $content .= the_title('

  <li>
<a href="'.get_permalink().'">', '</a>
</li>', true);
                  }
                  $content .= '
</ul>';
        }
        //Reset query
        wp_reset_query();
        return $content;
}
add_shortcode('mostrar_cat', 'show_category_posts');

Entendiendo el código

La encargada de realizar todo el trabajo es la función query_posts(), es posible pasarle varios parámetros, como orderby=date para ordernar por fecha en orden ascendente (order=ASC). Para mostrar todos los artículos de la categoría es necesario el parámetro posts_per_page=-1. La lista de parámetros completa la podemos encontrar en la documentación de la clase WP_Query.

Lo siguiente que hace este trozo de código es iterar sobre todos los artículos y crear una lista.

Por último añadimos la función como un shortcode y ya está lista para usar.

Para usar el shortcode debemos conocer el id de la categoría a mostrar, o reemplazar el parámetro cat= por cualquiera de los siguientes:

  • cat (int) - El usado por este código, requiere el ID.
  • category_name (string) - Usar el slug de la categoría.
  • category__and (array) - Usa el ID.
  • category__in (array) - Usa el ID.
  • category__not_in (array) - Usa el ID.

Ejemplo de uso

[mostrar_cat cat="1"]

Referencias

Documentación función query_posts »» codex.wordpress.org
Parámetros de query_posts »» codex.wordpress.org

Índice