WordPress: utilizzare il formato delle date di Twitter

WordPress: utilizzare il formato delle date di Twitter

Twitter mostra il calcolo del tempo trascorso dalla pubblicazione di un tweet usando un formato particolare che è divenuto molto popolare nel microblogging. Possiamo riprodurre questo formato anche nei nostri temi di WordPress.

Il seguente codice, da aggiungere al file functions.php, utilizza un filtro sulla funzione the_time():


function my_time_ago() {
 
	global $post;
 
	$date = get_post_time('G', true, $post);
 
	
	$chunks = array(
		array( 60 * 60 * 24 * 365 , __( 'anno', 'tuotema' ), __( 'anni', 'tuotema' ) ),
		array( 60 * 60 * 24 * 30 , __( 'mese', 'tuotema' ), __( 'mesi', 'tuotema' ) ),
		array( 60 * 60 * 24 * 7, __( 'settimana', 'tuotema' ), __( 'settimane', 'tuotema' ) ),
		array( 60 * 60 * 24 , __( 'giorno', 'tuotema' ), __( 'giorni', 'tuotema' ) ),
		array( 60 * 60 , __( 'ora', 'tuotema' ), __( 'ore', 'tuotema' ) ),
		array( 60 , __( 'minuto', 'tuotema' ), __( 'minuti', 'tuotema' ) ),
		array( 1, __( 'secondo', 'tuotema' ), __( 'secondi', 'tuotema' ) )
	);
 
	if ( !is_numeric( $date ) ) {
		$time_chunks = explode( ':', str_replace( ' ', ':', $date ) );
		$date_chunks = explode( '-', str_replace( ' ', '-', $date ) );
		$date = gmmktime( (int)$time_chunks[1], (int)$time_chunks[2], (int)$time_chunks[3], (int)$date_chunks[1], (int)$date_chunks[2], (int)$date_chunks[0] );
	}
 
	$current_time = current_time( 'mysql', $gmt );
	$newer_date = ( !$newer_date ) ? strtotime( $current_time ) : $newer_date;
 
	
	$since = $newer_date - $date;
 
	
	if ( 0 > $since ) {
		return __( 'circa', 'tuotema' );
	}
 
	
	for ( $i = 0, $j = count($chunks); $i < $j; $i++) {
		$seconds = $chunks[$i][0];
 
		
		if ( ( $count = floor($since / $seconds) ) != 0 ) {
			break;
			
		}
	}
 
	
	$output = ( 1 == $count ) ? '1 '. $chunks[$i][1] : $cāunt . ' ' . $chunks[$i][2];
 
 
	if ( !(int)trim($output) ){
		$output = '0 ' . __( 'secondi', 'tuotema' );
	}
 
	$output .= __(' fa', 'tuotema');
 
	return $output;
}
 

add_filter('the_time', 'my_time_ago');

Torna su