No se han encontrado widgets en la barra lateral

Un problema en blogs con muchos artículos es encontrar contenido que has publicado hace tiempo.

Mas allá de que los usuarios usen el buscador de wordpress, que funciona bastante bien, voy a explicar como crear una página que contenga un listado de todos los post que se han publicado en mi blog. Tengo un ejemplo real en http://www.pedroventura.com/blog_programacion/historico-articulos/

Lo primero será crear una página en wordpress, si no tenéis mucha idea lo primero será que os leáis el siguiente artículo antes de empezar :  Crear y usar plantillas para páginas de wordpress

Para crear nuestra página con el listado de los post o artículos  crear en /wp-content/themes/TU_TEMA/page-archive.php con el siguiente código:

[code lang=»PHP»]

<?php
/*
Template Name: Archives
*/
?>

<?php get_header(); ?>
<?php get_sidebar(); ?>

<?php
$numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = ‘publish’");
if (0 < $numposts) $numposts = number_format($numposts);
?>

<h2>Historial de Artículos</h2>
<p>A continuación muestro un listado con todos los post publicados hasta la fecha.</p>

<ul id="archive-list">
<?php
$myposts = get_posts(‘numberposts=-1&’);
foreach($myposts as $post) : ?>
<li><?php the_time(‘m/d/y’) ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>

<?php get_footer(); ?>

[/code]

Lo primero que hay que hacer para crear el template de la página. Un nuevo template se crea añadiendo las siguientes lineas al inicio del fichero.

[code lang=»PHP»]
<?php
/*
Template Name: Archives
*/
?>
[/code]

Sólo faltaría que crearais la página en el panel de wordpress y le asignarais el nuevo template que se acaba de crear.

Páginas -> Añadir nuevo -> Atributos -> Plantilla

Tendréis una bonita página con todo el listado de post que se han ido creando.

Mostrar todos los post wordpress en una página 1
Listado artículos (Pulsar para ver a mayo tamaño)

18 comentarios en «Mostrar todos los post wordpress en una página»
  1. Hola, ya probe tu esta genial pero hay un problema que en ese historico solo aparecen los que eh publicado en el home pero yo quiero que tambien aparescan los que mande a borrador, osea los que deje de publicar en mi entrada, como hacer?

    1. Buenas, pues para eso tienes que modificar la sql que aparece en el ejemplo
      [code]
      SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = ‘publish’
      [/code]
      por la siguiente
      [code]
      SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = ‘publish’ and ‘post_status’ = ‘draft’
      [/code]

      1. Hola que tal , puse lo que me dijiste y bueno tal como aparece en el siguiente codigho:

        get_var(«SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = ‘publish’ and ‘post_status’ = ‘draft'»);
        if (0
        Historial
        A continuacion muestro un listado con todas entradas publicadas hasta la fecha

        : <a href="»>

        pero sigue pasando lo mismo sigue apareciendo solo las entradas que publico.

  2. perdon el siguiente codigo:

    get_var(«SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = ‘publish’ and ‘post_status’ = ‘draft'»);
    if (0
    Historial
    A continuacion muestro un listado con todas entradas publicadas hasta la fecha

    : <a href="»>

    1. Buenas Diego,

      La query que te dije en mi anterior comentario no es lo que hay que tocar, me he equivocado, la puedes dejar tal cual estaba, el tema es usar la funcion query_posts()

      He estado mirando la documentación de Wordpres, lo que tendrías que tocar es la siguiente linea
      [code]
      $myposts = get_posts(‘numberposts=-1&’);
      [/code]

      y cambiarla por esto
      [code]
      $myposts = query_posts( array( ‘post_status’ => array( ‘publish’, ‘draft’, ‘future’ ) ) );
      [/code]

      Pero no se porque no esta funcionando, puedes mirar tu mismo la docu de wordpress http://codex.wordpress.org/Function_Reference/query_posts

      Lo que he hecho es sacar dos arrays uno con los publicados y otro con los borradores y los he unido de la siguiente manera
      [code]
      $myposts_publicados = get_posts(‘numberposts=-1&’);
      $myposts_borrador = query_posts( ‘post_status=draft’ );
      $myposts = array_merge($myposts_borrador,$myposts_publicados);
      [/code]

      Si te sale o encuentras una forma mejor de sacar los post publicados y los borradores a la vez comentamelo, plz

      Un saludo!

  3. Te comentare que encontre una mejor manera de hacerlo, lo que hice fue limitar las entradas en mi home a 5 y como puedo meter ilimitadas entradas al home, entonces solo se verann 5 pero en el historial se vera todo el hisotrial de post, solo agrege esta linea:

    comente esta linea:

    apra agregar esto :

    have_posts()) : $resumen->the_post(); ?>

    si me salio, chequea yme avizas nos vemos.

    1. donde pone:
      [code lang=»PHP»]
      $myposts = get_posts(‘numberposts=-1&’);
      [/code]
      Sustitúyelo por
      [code lang=»PHP»]
      query_posts( array( ‘post_status’ => array( ‘publish’ ) ), ‘orderby’ => ‘title’, ‘order’ => ‘DESC’ ) );
      [/code]

  4. hola intento condicionar una pagina que use para listar post, y no funciona, intente con is_page y con is_page_template, imagino que no la reconoce, tambien vale aclarar que cuando entro a la pagina en la barra de administracion no aparece editar página y cuando agrego en el php que me liste los post de x categoría en la barra de administracion me aparece editar categoria . o.O

  5. Hola, excelente tutorial! Necesesitaría saber si al lista de post, se le puede agregar, además de la fecha y el título el extracto o el contenido del post…

  6. HOLA HAY ALGUNA FORMA O ALGUN PLUGIN PARA QUE EN VEZ DE MOSTRAR MIS POST MUESTRE LOS QUE LOS USUARIOS REGISTRADOS PUEDEN HACER Y QUE ELLOS SOLO VEAN LOS SUYOS ? MUCHAS GRACIAS

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *