Loop: obtener etiquetas con get_posts

Cuando en WordPress nos interesa tener varios loops en una página (por ejemplo, para mostrar varias columnas, una por categoría), una de las más fáciles maneras de conseguirlo es con get_posts:

<?php
$posts = get_posts('category=vinos-blancos&numberposts=1');
foreach($posts as $post):
setup_postdata($post);
?>
<?php the_title(); ?>
<?php the_content(); ?>
<?php endforeach; ?>

En este ejemplo, estamos convocando a un artículo (numberposts=1), el último artículo que hayamos escrito de hecho, dentro de la categoría "Vinos Blancos".

Sucesivamente, en cada columna de nuestro index.php donde quisiéramos que ello ocurriera podríamos cambiar la categoría por una nueva, y disponer así de cuatro o cinco columnas por categoría (siguiendo el ejemplo: vinos blancos, vinos tintos, vinos rosados, champagne, licores…).

Si quisiéramos, sin embargo, disponer además de las etiquetas; por ejemplo, "afrutado", "seco", "fuerte", deberemos realizar un añadido especial en nuestro loop:

<?php
$posts = get_posts('category=4&numberposts=1');
foreach($posts as $post):
setup_postdata($post);
?>

<?php the_title(); ?>
<?php the_content(); ?>

<?php $posttags = get_the_tags($post->ID); if ($posttags) {
foreach($posttags as $tag) {
echo '<a href="';
echo get_tag_link($tag);
echo '">';
echo $tag->name . ' ';
echo '</a>';
}
}
?>
<?php endforeach; ?>

Como get_posts es un tipo de loop más sencillo que el normal de WordPress, necesitaremos especificar la ID numérica de cada post ($post->ID) para que WordPress nos dé, además de título y contenido, las etiquetas correspondientes enlazadas a sus archivos de etiqueta como en este caso.

Esperamos que este truco os sea útil y vuestros comentarios.

Comentarios
  1. Luchosar

    Mmmmm…algo estoy haciendo mail o algo entendi mal.
    Segun interpreto, con este tutorial puedo lograr que mis noticias o contenido de las categorias salgan en forma de columnas, es decir una al lado de la otra,,,es asi?
    Pues lo segui al pie de la ltra y no me funciona, duplique el loop y cambie la gategoria para cada uno, me gustaria me funcione me pueden dar una mano.
    Mil gracias de sde Colombia
    Link de prueba: http://www.cootransurb.org/admin/

    Escrito el01/03/2010
  2. Hola Luchosar, gracias por apuntarlo, tengo que rectificar mi código : en vez de category, inténtalo con category_name, o bién, si dejas category, en vez de poner el nombre de la categoría pon su ID numérica (la encontrarás sobrevolando con el cursor las categorías en la administración, y fijándote en la url a la que apuntan).

    Vamos, que he mezclado category_name=nombre-de-la-categoria con category=8. Ambas cosas son posibles. Saludos !

    Escrito el01/03/2010
  3. luchosar

    Hola Ignacio gracias por responder.
    Efectivamente lo he puesto desde el princio con la ID asi: $posts = get_posts(‘category=5&numberposts=1’);

    Escrito el01/03/2010
  4. luchosar

    Nada…tambien la coloque con el nombre de la categoria pero no me funciona: $posts = get_posts(‘category_name=noticia-2&numberposts=1’);

    Escrito el01/03/2010
  5. Mmm, y si lo pruebas con :

    cat=5

    Te da algún mensaje o te sale en blanco ?

    A veces también, get_posts interfiere con el Loop principal si lo pones arriba de éste…

    En ése caso prueba con wp_query :

    http://snipplr.com/view/29054/wpquery-to-create-multiple-loops-category-columns/

    Escrito el01/03/2010
  6. luchosar

    Espera…parece que me equivoque.
    Que salgan tres noticias una determinada categoria y despues abajo sale otras tres de otra categoria, si, eso si lologro.

    Pero lo que crei que hacia el script era que me colocaba anas columnas, es decir:
    Columna categoria noticias y bajo esta salen tres noticias..al lado categoria CINE y salen las tres de ésta…..es decir tipo revista o periodico.

    Escrito el01/03/2010
  7. Oookay, entonces lo que tienes que hacer es añadir HTML (en index.php por ejemplo) y CSS en style.css, del tema que estés usando, para crear las columnas.

    He hecho un copy/paste en snipplr aquí :

    http://snipplr.com/view/29063/html–css-creando-varios-loops-en-varias-columnas/

    Dime si funciona, saludos

    Escrito el01/03/2010
  8. Perfecto!!!!!! pero asumo que las fotos no me salen porque el espacio de las columnas es mas pequeño que la fotos no?…Mi amigo, llevo meses buscando esta solucion y la encontre contigo…muchas gracias..pero ahora ( ya que empezaste a ayudarme) como le haria para que qedara asi: http://www.luchosarmiento.com/images/CATEGORIAS-HORIZONTAL.jpg

    Con tu tutorial ha quedado asi:http://www.cootransurb.org/admin/

    Muchisiiiiiiiiiimas gracias!!!!!!!

    Escrito el02/03/2010
  9. Estoy muy contento…ya casi doy con lo que buscaba.
    He creado una plantilla en Artisteer a manera de prueba, por favor mirala:http://www.cootransurb.org/admin/ veo que las fotos no me salen..porque sera?
    De nuevo mil gracias!

    Escrito el02/03/2010
  10. Logre hacer lo que te envie en la imagen (una categoria arriba y el resto en columnas), pero no logro que salgan las fotos de las categorias colocadas en columnas.

    Escrito el02/03/2010
  11. Una pregunta amigo Ignacio:
    En alguna ocasion logre hacer lo de las columnas en tablas es eso correcto, mira este ejemplo: http://www.luchosarmiento.com/wp7/

    Escrito el02/03/2010
  12. Hola Luchosar,

    Si quieres que te salgan las imágenes para cada artículo te recomiendo este método :

    http://www.forosdelweb.com/f118/tutorial-como-extraer-miniaturas-imagenes-wordpress-653664/

    Luego, antes de the_excerpt, usas la miniatura.

    Lo único que hay que tener en cuenta es que funciona sólo con las imágenes que hayas subido a través de WordPress (no así con las linkadas en internet).

    Escrito el02/03/2010
  13. luchosar

    Pero…en el loop original si me carga las imagenes.

    Escrito el02/03/2010
  14. luchosar

    Lo otro amigo es que no me aaparece el link al desarrollo de la noticia.
    Grcias por tu tiempo y ayuda.

    Escrito el02/03/2010
  15. Hola Luchosar, para el link a la notícia completa, tienes que incluír en el código the_permalink. Código actualizado.

    Para las imágenes, creo que tendrías que cambiar the_excerpt por the_content, o bién, en el Editor, rellenar el campo ‘Extracto / Excerpt’ con una imagen (escrita en HTML) y, el resto del texto introductorio.
    Pero ambas soluciones son en plan ‘rápido’, yo te recomiendo el link anterior, o ésta otra manera, que también está muy bién : http://www.todowp.org/wordpress-2-9-y-la-funcion-post-image/

    Escrito el02/03/2010
  16. PERFECTO…
    Me funciono con the_content.

    Solo dos ultimas cosillas (perdon x el abuso)
    Como le coloco los titulos de las categorias en rojo, y lo otro, si coloco tres noticias de una categoria se repite el titulo de la categoria es decir si coloco ECONOMIA, sale la noticia de esta y debajo de esta de nuevo se repite ECOMOMIA…seria genuial que solo apareciera una sola vez y debajo de esta las tres noticias de ECONOMIA.
    Arreglando ese detallido doy por felizmente satisfecho este tema.
    De nuevo mi agradecimiento eterno amigo Ignacio!
    Ver como voy aqui: http://www.cootransurb.org/admin/

    Escrito el04/03/2010
  17. Hola Luchosar, nuevo código en snipplr, sólo tienes que reemplazar “Categoría 1”, “Categoría 2”, etc, por las distintas categorías que tengas, y añadir el CSS para los h5 de las categorías.

    Pero como ya nos alejamos del tema te recomiendo pasarte por el foro de TodoWordPress si tienes más preguntas!

    Saludos

    Escrito el04/03/2010
  18. luchosar

    MARAVILLOSO!!!!!!!!
    Solo me resta darte las gracias por tu tiempo, y el generoso sentimiento de compartir tus conocimientos, llevo meses buscando esto solo aqui en http://www.todowp.org lo encontrté.
    Doy por cerrado el tema.
    GRACIAS!

    Escrito el04/03/2010
  19. A tí Luchosar :)

    Escrito el07/03/2010

DEJA TU COMENTARIO