
Hace X: Plugin para mostrar entradas publicadas hace x tiempo en WordPress
Trabajando en la renovación y optimización de uno de los proyectos de Nicestream me propuse mejorar un plugin que servía para mostrar lo publicado hace un año. El plugin que se usaba tenía un código demasiado largo y rebuscado, con un par de cosas que se podían simplificar mucho para hacerlo más fácil de usar, y finalmente lo único que hacía era generar enlaces al archivo de una fecha en la que podías ver los posts correspondientes.
Mi idea era poder mostrar directamente en el sidebar una lista de títulos de los posts publicados hace un año; y, ya que estabamos, permitir elegir la cantidad de años, o incluso días, semanas o meses; por si llegase a hacer falta en otro momento o en otro proyecto.
Además, sumé una variable que nos permite agregar unos días de más o de menos a la función. De esta forma podemos mostrar contenido de hace “mas o menos” X tiempo, quedando la búsqueda entonces como un rango de fechas de entre X días antes y X días después de la fecha correspondiente.
Así que, empezando de cero logré algo bastante decente, contando con la inefable ayuda de Javi y su cabeza de programador para resolver más rápido un par de detalles fundamentales.
Pueden ver el plugin funcionando en la columna derecha de este blog, bajo el título de “Rememorando“, donde se muestran posts de hace un año y más o menos 3 días. Por ahora, para la cantidad de posts que hay en este blog, me pareció el número más razonable para mostrar cosas publicadas hace un año; pero, como decía, pueden aprovechar esa variable para ajustarlo como mejor les resulte en su caso. (Nota: Si no ven el ejemplo es porque no todos los días hay posts que coinciden con la fecha que tengo puesta y el plugin no muestra nada en ese caso.)
Si les interesa, pueden probarlo ustedes mismos (bajo su propia responsabilidad, claro).
¿Cómo funciona?
Una vez descargado el plugin, tienen que subirlo en su carpeta wp-content/plugins, activarlo desde la administración y luego incluir la función en la parte del theme en la que quieren que aparezca.
La función y variables para incluir el plugin son las siguientes:
hacex($num, $changui, $tipo, $limite, $antes, $despues, $ant, $des);Pueden adaptarlo usando las variables incluidas de la siguiente forma:
Variables
- $num: Cantidad del ‘$tipo’ elegido. Por defecto ’1′.
- $changui: Cantidad extra de días para mostrar posts. Por ejemplo, si el valor es ’1′, se incluirán también posts publicados un día antes y un día después de la fecha seleccionada. Por defecto ’0′.
- $tipo: Valor ‘d’,'w’,'m’ o ‘y’ para días, semanas, meses o años a partir de hoy. Por defecto ‘y’.
- $limite: Cantidad máxima de posts a mostrar. Por defecto ’10′.
- $antes: Código a incluir antes de todos los resultados, si es que hay alguno. Por defecto ‘<ul>’.
- $despues: Código a incluir después de todos los resultados, si es que hay alguno. Por defecto ‘</ul>’.
- $ant: Código a incluir antes de cada resultado. Por defecto ‘<li>’.
- $des: Código a incluir después de cada resultado. Por defecto ‘</li>’.
Así, por ejemplo, para mostrar una lista de posts publicados hace exactamente 1 año, podemos incluir el siguiente código:
<? hacex(); ?>Posts publicados hace exactamente 2 años:
<? hacex(2); ?>Posts publicados hace un mes y un día más o un día menos:
<? hacex(1,1,'m'); ?>Si no existe ningún post publicado en la fecha correspondiente, no aparecerá nada.
Otro ejemplo es el código usado en este blog para mostrar posts publicados hace 1 año y más o menos 3 días:
<? hacex(1,3,'y',10,'<div id="rememorando"><h3>Rememorando</h3><ul>','</ul></div>'); ?>En este caso el título del bloque y el div que lo contiene está incluído en el código, de forma tal que si no existe ningún resultado, no apareza un título sin ningún post debajo y ni siquiera aparezca un div vacío.
En fin, quizás tenga algún bug o algo pueda mejorarse. Por ejemplo, toda la operación para seleccionar fechas podría hacerse en PHP, pero yo elegí hacerla con funciones de MySQL. Quizás la otra forma tenga una performance mejor, o quizás dependa del sitio. Si algún experto quiere comentar su opinión…
Pueden probarlo, usarlo, modificarlo y hacer lo que quieran con él… si tienen alguna duda, sugerencia o mejora, será más que bienvenida en los comentarios.



muy bueno el plugin… no tengo blogs tan viejos como para mostrar posts viejos todavia… pero me parece muy interesante :)
@eugenio: Gracias! Si llegás a probarlo avisame!
Que plugin más bueno! Me ha venido bien para mi blog, gracias. Creo que te haré un post explicando como instalarlo su funcionamiento y un enlace a este post de tu plugin claro ;-)
@Espineli: ¡Qué bueno que te sirva! Saludos!
Leo, ahi instale el plugin! Anda de pelos!! lo unico es que estaria muy bueno para mejorarle que lo widgetizes… asi es mas facil agregarlo al sidebar y que por ejemplo tome el css del resto del sidebar…
yo me di aña y logre dejarlo como el resto de los widgets.. pasate por el blog a verlo cuando quieras!!
gracias por compartir!
Me alegro de que te haya servido!
La verdad es que jamás usé los widgets de WordPress, pero por lo que tengo visto por encima no debería cambiar mucho… salvo que el theme tenga una clase especial para diferenciar las listas que son widgets de las que no lo son.
Si cambia mucho y se hace molesto, me busco un rato para leer la documentación y adaptarlo :P
mi theme no los diferencia a sin son widgets o no, pero simplemente no levanto el estilo para las listas del sidebar.
saludos!
Bueno, es que justo el theme que estás usando no tiene estilos por defecto para listas, sólo para elementos con la clase “widget”, pero no sé si es un estándar o algo particular (o de varios themes) :S
No sé, 0 experiencia con widgets así que si hace falta lo miro y agrego una versión más o algo…
con esto puedo hacer que la portada muestre post aleatorios? (o una categoria muestre post aleatoreos? o sea.. sin un orden especifico para no olvidar los primeros post al final)
No.
Lo mejor es que hagas un query personalizado (en este post expliqué una forma de hacerlo) y agregues
orderby=randen la función, por ejemplo:WP_Query('showposts=5&orderby=rand');uuuuy que buenoooo! ya me paso a ver ese link! graxias por la data!
muchisimas gracias de verdad
De nada! ;)