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.
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?
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]
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.
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="»>
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!
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.
Buenas.
Quería hacer esto mismo pero ordenar los posts por el título en vez de por fecha.
Sabríais decirme donde tengo que meter el order?
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]
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
Hola me gustaria saber como hiciste para imprimir todos los post con navegacion en tu página http://www.pedroventura.com/blog_programacion/ quiero hacer algo similar sobre una página que ya está hecha pero no encuentro como y soy nuevo en wordpress, gracias
Quisiera que me dijeran como añadir una nueva entrada y que me quede debajo de todas las que ya estan. Gracias!
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…
Me ayudaste mucho 🙂
Hola muchas gracias por la explicación, tengo un problema que no se como solucionar, te agradecería tu ayuda.
En la nueva página me aparecen los post abajo del todo y se me descuadra el tema, te la dejo para que le eches un vistazo.
Gracias de antemano.
http://oleomarketing.com/archivos
Muchas gracias, andaba buscando algo así, muy útil
Me has ayudado mucho, gracias funcciona perfectamente.
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
Cómo se hace para ordenar por categoría?