Mostrar posts recientes de una categoría o tag

Este artículo es una colaboración de Esteban Rojas (en su perfil no ha configurado url ni twitter)

En nuestro blog seguramente hablaremos de muchos temas, por ende tal vez tengamos muchas categorías, sin embargo siempre hay unas 2 o 3 que tocamos más a menudo o que tal vez queramos resaltar de las demás, por lo que a continuación compartiré un código que ayuda a hacer precisamente eso, listar los posts recientes que esten archivados en una categoría o tag especifica.

PHP:
  1. <?php query_posts('cat=1&showposts=5'); ?>
  2. <ul>
  3. <?php while (have_posts()) : the_post(); ?>
  4. <li><a href="<?php the_permalink(); ?> rel="bookmark" title="Leer <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
  5. <?php endwhile;?>
  6. </ul>

Esto usa la función query_posts mas la ID de la categoría de la que queramos tomé los posts, el cat=1, además de poder definir cuantos artículos queremos mostrar con el parámetro showposts, . Para una etiqueta sería de esta forma:

PHP:
  1. <?php query_posts('tag=wordpress-hacks&showposts=3'); ?>
  2. <ul>
  3. <?php while (have_posts()) : the_post(); ?>
  4. <li><a href="<?php the_permalink(); ?>" rel="bookmark" title="Leer <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
  5. <?php endwhile;?>
  6. </ul>

Modificando tag=wordpress por el nombre de la etiqueta de la que ustedes quieren tomé las entradas.

Muchas gracias Esteban!


17 personas han opinado, ¿Vos ya lo has hecho?

  1. Hola

    Qué código podría usar para mostrar los últimos cinco posts de una determinada categoria en el sidebar?

    Gracias

    :)

  2. Hola Javi, el código del post explica justamente eso..

  3. muchas gracias colega,la verdad que me ha solucionado un montón, de nuevo muchas gracias por querer compartir.

  4. El código se inserta directamente en un widget o como se hace?
    Gracias

  5. Javi: Si, lo instertás directo en el Widget y debería funcionar.

    Neri, una pregunta: ¿Cómo hago para que abajo del título aparezca un extracto del contenido?

  6. Ya encontré como hacerlo. Quedaría algo así (espero que aparezca bien el código):

    < ?php query_posts('cat=1&showposts=5'); ?>
    < ?php while (have_posts()) : the_post(); ?>

    rel=”bookmark” title=”Leer < ?php the_title_attribute(); ?>“>< ?php the_title(); ?>

    < ?php echo dp_clean($post->post_content, 90); ?>

    < ?php endwhile;?>

    Nótese que agregué H3 al título de la categoría.

  7. Pues insertando el código tal cual en el widget, no me funciona… :(

  8. Hola, una preguntita:
    puedo de alguna manera hacer que el nombre del tag sea dinámico?

    Me explico:

    Tengo un listado de empresas agrupados por localidad. Ej: Tandil > Ferretería > Ferretería Juan Carlos.

    A cada empresa les pongo el tag “ferreterias-en-xxx”, donde xxx es la localidad.

    Mi idea es poner este código pero donde dice: query_posts(‘tag=ferreterias-en-xxx&showposts=3′), de manera que si está en Buenos Aires muestre los post con tag ferreterias-en-dorrego.

    Se entiende o hice despelote? Está bien lo que digo o es una grasada total? :) Gracias!

    Jose

  9. Claro, donde puse Buenos Aires quise poner Dorrego…

  10. Hola tengo un problema con categorias, en mi pagina donde se muestra el contenido de un post, tengo una barra lateral donde pondre los otros posts relacionados con la categoria del post que se esta viendo. Bueno el problema es ese, no se como cachar la categoria del post que se esta viendo para asi mostrar en esa barra, los demas posts, de dicha categoria. Intente con este codigo

    cat_name . ‘ ‘;
    } ? >

    Y luego para mostrar un N numero de posts en esa barra uso esta linea

    Si notan pongo lo que me resulte del foreach guardado en la variable $category en el query_posts pero me sale un error de que una clase no se puede convertir a string:

    “Catchable fatal error: Object of class stdClass could not be converted to string”

    Si le hago un ECHO en el foreach si imprime la categoria, pero cuando quiero usar esa variable para lo que pretendo, marca este error. ¿No saben de algun otro metodo para obtener la categoria? o ¿Convertir esa clase a string? bueno desde ya muchas gracias!

  11. Hola tengo un problema con categorias, en mi pagina donde se muestra el contenido de un post, tengo una barra lateral donde pondre los otros posts relacionados con la categoria del post que se esta viendo. Bueno el problema es ese, no se como cachar la categoria del post que se esta viendo para asi mostrar en esa barra, los demas posts, de dicha categoria. Intente con este codigo
    [php]
    <? foreach((get_the_category()) as $category){
    $category->cat_name . ‘ ‘;
    } ?>
    [/php]
    Y luego para mostrar un N numero de posts en esa barra uso esta linea
    [php]<?php query_posts(
    $category . ‘&posts_per_page=3′
    ) ?>[/php]
    Si notan pongo lo que me resulte del foreach guardado en la variable $category en el query_posts pero me sale un error de que una clase no se puede convertir a string: [quote]Catchable fatal error: Object of class stdClass could not be converted to string[/quote]
    Si le hago un echo en el foreach si imprime la categoria, pero cuando quiero usar esa variable para lo que pretendo, marca este error. ¿No saben de algun otro metodo para obtener la categoria? o ¿Convertir esa clase a string? bueno desde ya muchas gracias!

    PERDON PUSE DE NUEVO EL MENSAJE POR QUE NO SE VEIA BIEN EL PHP

  12. @jorgevargasvega

    Hola, Tengo una plantilla instalada la cual trae un widget que muestra los post recientes y agrega una miniatura de 40×40. Este widget es muy bueno pero lamentablemente me muestras los ultimos post de todas las categorías. Tu código php sería GENIAL poderlo incluir en este widgetpero no sé en que parte.
    Si me pudieras ayudar sería FANTASTICO. Te dejo el código del widget de mi plantilla para que me indiques donde puedo insertar tu código.
    — CODIGO DEL WIDGET —
    ‘Displays Recent Posts’);
    $control_ops = array(‘width’ => 400, ‘height’ => 300);
    parent::WP_Widget(false,$name=’ET Últimas Entradas’,$widget_ops,$control_ops);
    }

    /* Displays the Widget in the front-end */
    function widget($args, $instance){
    extract($args);
    $title = apply_filters(‘widget_title’, empty($instance['title']) ? ‘Últimas Entradas’ : $instance['title']);
    $postsNum = empty($instance['postsNum']) ? ” : $instance['postsNum'];

    echo ”;

    if ( $title )
    echo $before_title . $title . $after_title;
    ?>

    have_posts()) : while ($custom_query->have_posts()) : $custom_query->the_post();
    include(TEMPLATEPATH . ‘/includes/widget-post.php’); ?>

    <?php
    echo ' ‘;
    }

    /*Saves the settings. */
    function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title'] = stripslashes($new_instance['title']);
    $instance['postsNum'] = stripslashes($new_instance['postsNum']);

    return $instance;
    }

    /*Creates the form for the widget in the back-end. */
    function form($instance){
    //Defaults
    $instance = wp_parse_args( (array) $instance, array(‘title’=>’Recent Posts’, ‘postsNum’=>’5′) );

    $title = htmlspecialchars($instance['title']);
    $postsNum = htmlspecialchars($instance['postsNum']);

    # Title
    echo ‘get_field_id(‘title’) . ‘”>’ . ‘Title:’ . ‘get_field_id(‘title’) . ‘” name=”‘ . $this->get_field_name(‘title’) . ‘” type=”text” value=”‘ . $title . ‘” />’;
    # Number of posts
    echo ‘get_field_id(‘postsNum’) . ‘”>’ . ‘Number Of Posts:’ . ‘get_field_id(‘postsNum’) . ‘” name=”‘ . $this->get_field_name(‘postsNum’) . ‘” value=”‘.$postsNum.’” />’;
    }

    }// end RecentWidget class

    function RecentWidgetInit() {
    register_widget(‘RecentWidget’);
    }

    add_action(‘widgets_init’, ‘RecentWidgetInit’);

    ?>

  13. Hola, me parece muy bueno este post, pero por casualidad saben como puedo llamar un post en especifico.
    La idea es que desde el pie de pagina en un dentro de un div mostrar un articuo que tengo.

    Gracias

  14. Hola Gracias por el aporte, ami me funcionó perfecto, pero mi necesidad es poco diferente, en el sidebar pretendo mostrar 2 listas (categoría 1 y 2) pero quiero que se muestren por més y año, ¿cómo es esto posible?

    Saludos.

  15. Excelente esta muy bien podre configurarlo con este tutorial

  16. @pedroresponde

    SERÍA IDEAL SI EL QUE ESCRIBE ESTE POST TAMBIÉN RESPONDIERA LAS PREGUNTAS. De lo contrario queda como alguien que COPIÓ y PEGÓ este artículo de algún lugar. Si no eres un COPY PASTE entonces responde las consultas que te realicen. ¿Qué sacas con hacer un post y ponerle la opción de comentarios si no te haces cargo de ellos? ESTO SE LLAMA QUERIDOS CONSULTANTES “FALTA DE MANTENCIÓN”.

¿Querés comentar algo?