Lunes, 12 de Marzo de 2012

Las fechas siempre resultan problemáticas a la hora de compararlas porque la mayoría de las funciones de WordPress devuelven una cadena de texto. Cuando se trata de comprobar si son iguales o diferentes es sencillo, pero si queremos sumar o restar días a una fecha determinada o comprobar si una es posterior a otra el planteamiento cambia. Veamos dos ejemplos:

1) Vamos a añadir una nota que informa a los visitantes de cuando se actualizó por última vez la entrada. Basta con formatear ambas fechas de forma idéntica e incluir el código en el loop del archivo single.php:

<?php
$actualizado = get_the_modified_date('l, j \d\e F \d\e Y');
$publicado = get_the_date('l, j \d\e F \d\e Y');
if ($actualizado !== $publicado) :
	echo '<p>Última actualización: '. $actualizado . '</p>';
endif
?>

El resultado sería, por ejemplo, el siguiente:  “Última actualización: Domingo, 4 de marzo de 2012”.

2) Imaginemos ahora que ejecutamos una consulta y necesitamos mostrar las entradas que se hayan actualizado en el último mes:

<?php
$mes_anterior = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$modificado = get_the_modified_date('d/m/Y');
list($dia,$mes,$ano) = explode('/',$modificado);
$fecha_modificado = mktime(0,0,0,$mes,$dia,$ano);
if ($fecha_modificado > $mesanterior) :
	echo 'Esta entrada se actualizó hace menos de un mes';
endif
?>

Expliquemos con algo más de detalle:

  • Línea 2: calculamos la marca de tiempo Unix para hace 1 mes.
  • Líneas 3 al 5: calculamos la fecha en la que fue modificada la entrada por última vez y la convertimos a marca de tiempo Unix.
  • Línea 6: efectuamos la comparación gracias a que ambas variables son números enteros.

Documentación: date, mktime, get the modified date y get the date.