Ultimos artículos publicados en WordPress
WordPress nos permite añadir una lista en el sidebar con los últimos artículos o posts publicados en el blog. Para hacerlo usamos un widget dónde podemos configurar la cantidad de artículos que deseamos mostrar.
Este widget no diferencia categorías, aparecen todos los posts del blog publicados recientemente de todas las categorías.
Quizás pueda ser interesante para el visitante añadir esta lista dentro del artículo o página que está leyendo y no sólo en el sidebar. Incluso podríamos mostrar al final de cada artículo los últimos publicados de esa misma categoría.
La función get_posts nos permite hacer esto y muchas cosas más mediante diversos parámetros a la hora de hacer la consulta. Esta función debe ir en el archivo single.php en el lugar dónde necesitemos la lista.
Por ejemplo, si quieres mostrar los 10 últimos artículos publicados al final de cada artículo:
get_posts('numberposts=10&offset=0');
Si quieres mostrar 10 pero no el último:
get_posts('numberposts=10&offset=1');
Si quieres mostrar 10 pero no los dos últimos:
get_posts('numberposts=10&offset=2');
Como puedes comprobar 'offset' le indica a get_posts a partir de qué post consultar.
Si quieres mostrar los 10 últimos pero no quieres que aparezca el actual:
get_posts('numberposts=10&offset=0&exclude='.$id);
Una vez sabemos lo anterior podemos pasar a completar el código para mostrar sólo los artículos de la misma categoría. Para ello necesitamos conocer de qué categoría se trata. El código completo para averiguar la categoría actual y poder utilizar get_posts de forma adecuada sería el siguiente:
<?php $cat = get_the_category(); $cat = $cat[0]; $myposts = get_posts('numberposts=10&offset=0&exclude='.$id. '&category='.$cat->cat_ID); ?> <div> <h3>Otros articulos de esta categoria</h3> <ul> <?php foreach($myposts as $post) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul></div> <?php } ?>
Con el código anterior mostramos los 10 últimos artículos de la misma categoría del post que esté leyendo el visitante y además lo excluímos de la lista.
La posición del código dentro del archivo single.php depende de dónde deseemos mostrar la lista de los últimos archivos publicados. Puede ir al final aunque lo lógico es situarlo justo después del artículo y antes de los comentarios. Puesto que es posible colocarlo dentro del bucle while que utiliza WordPress para obtener los artículos de la base de datos debemos tener en cuenta lo siguiente.
Tanto el bucle como get_posts hacen consultas a la base de datos y no pueden interferirse mutuamente. Para evitarlo debemos guardar la consulta previa antes de poder ejecutar otra consulta. Una vez realizada esta última restauramos la consulta anterior para que WordPress siga su proceso de consultas y no obtenga resultados imprevisibles con ellas.
Sólo tenemos que añadir al principio del código anterior la línea:
<?php $tmp_post = $post; ?>
y al final
<?php $post = $tmp_post; ?>
De esta forma podemos utilizar la función get_posts en cualquier parte de nuestro archivo single.php sin preocuparnos de que la información que se muestra se vea alterada.
En un artículo anterior hablamos de la posibilidad de mostrar una lista de artículos de la misma categoría de forma aleatoria. Pues esto se puede hacer también con get_posts y así obtener una lista de artículos similares o relacionados.
Las dos funciones explicadas en los dos artículos, query_posts y get_posts, utilizan el mismo código interno para acceder a la base de datos.
El código sería:
<?php $tmp_post = $post; ?> <?php $cat = get_the_category(); $cat = $cat[0]; $myposts = get_posts('numberposts=6&orderby=rand&offset=0&exclude=' .$id.'&category='.$cat->cat_ID); if ($myposts) { ?> <div> <h3>Artículos relacionados</h3> <ul> <?php foreach($myposts as $post) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> </div> <?php } ?> <?php $post = $tmp_post; ?>
En este caso mostramos 6 artículos aleatoriamente de la misma categoría excluyendo el actual. Si hubiesen menos de 6 se muestran los encontrados. Si no existieran archivos no se mostraría nada.
9 febrero 2011
Estas cosas son las que me gustaria aprender, ¿qué es lo que se estudia para dominar estos temas?
11 febrero 2011
Jannuz, pues hay que dominar PHP y tener conocimientos de HTML, CSS. PHP es imprescindible porque las funciones de WordPress están hechas en este lenguaje de programación. Aunque con un mínimo de conocimientos es posible entenderlas, como es mi caso.
Para ello puedes acudir a la página del codex de WordPress dónde existe una detallada explicación (aunque no esté completa) de cada una de ellas.
http://codex.wordpress.org/Function_Reference/
Un saludo
21 mayo 2011
Esto es justo lo que necesitaba saber, sabia que tenia un problema con los datos que guardaban mis consultas, pero no lo entendia. Perfecto!