2016-08-29 4 views
0

Ich benutze WordPress und ich möchte Alter in allen meinen Posts dynamisch aktualisieren.PHP Rendering Alter

ich den Code unten in meinem functions.php mit:

function internoetics_determine_age($atts) { 
extract(shortcode_atts(array(
'dob' => '' /* See post for date formats */ 
), $atts)); 
$age = floor((time() - strtotime($dob))/31556926); 
return $age; 
} 
add_shortcode('age', 'internoetics_determine_age'); 

ich dann die [dob age = "1945"] Shortcode verwenden, aber das Ergebnis, das ist -16 angezeigt wird, sollte es 71 sein

Irgendwelche Ideen?

Antwort

1

strtotime Funktion arbeitet mit Daten so strtotime(1945) ist falsch. strtotime('1945-01-01') ist richtig so:

$age = floor((time() - strtotime(((int)$dob) . '-01-01'))/31556926); 

Aber Sie sollten nur verwendet werden:

$age = date('Y') - ((int)$dob); 

* ((int) $ dob) nur für den Fall $ dob hat anderes Format

+0

Was passiert, wenn es '[ Alter dob = "1945-01-04"] '? –

+0

'$ dob = (int) $ dob;' – nospor