twig-Erweiterung für WordPress-Plugin

"JSON Content Importer" WordPress Plugin

Kernelement der PRO-Version meines WordPress-Plugins JSON Content Importer ist die Template-Engine twig, die auch in Symfony2-PHP-Framework zum einsatz kommt. Von Haus aus kann twig schon einiges, manches leider aber nicht.

Konkret vermisste ich die Mögichkeit, Datum- und Zeitangaben möglichst flexibel einzustellen. Denn ein niederländischer Kunde meines Plugins wollte die niederländische Wochentags-Bezeichnung anzeigen. Damit das möglich ist, habe ich eine Erweiterung für twig geschrieben, die in Aktion wie folgt aussieht:

{{ zeit |
dateformat('%A %m/%d/%y %H:%M:%S', 'Europe/Berlin', 'nl_NL') }}

Das Ergebnis kann man hier sehen: Die Namen der Wochentage sind in niederländischer Sprache angezeigt.

“zeit” steht dabei für das Feld mit der Datumsangabe im JSON-Feed. die Pipe “|” bewirkt, dass der folgende Code auf dieses Feld angewendet wird.
Dieser Code ist die Funktion “dateformat” die wie folgt aussieht:

$twig_extra_filter_dateformat =
new Twig_SimpleFilter('dateformat',
function ($data, $dateformatstr, $datetimezone, $datelocale) {
$curentTimezone = date_default_timezone_get();
date_default_timezone_set($datetimezone);
$validDateLocale = FALSE;
if (preg_match("/([a-z_]*)/i", $datelocale)) {
$validDateLocale = TRUE;
}
if ($validDateLocale) {
$getlocale = setlocale (LC_TIME,"0");
setlocale(LC_TIME, $datelocale);
}
if (!( is_numeric($data) && (int)$data == $data )) {
$data = strtotime($data);
}
$formattedDate = strftime($dateformatstr, $data);
if ($validDateLocale) {
setlocale(LC_TIME, getlocale);
}
date_default_timezone_set($curentTimezone);
return $formattedDate;
});

$data enthält “ziel”, die drei Argumente sind: