WordPress bietet eine Pseudo-Cronjob-Funktionalität, welche es dem Entwickler erlaubt zeitgesteuerte Events auszuführen. Zum Beispiel funktioniert die komplette Update-Notification darüber. In diesen sogenannten Scheduled Events kann man auch selbst eigene Jobs definieren. Dabei sollte man aber auf eine wichtige Sache achten: Die Zeit.
Die wp-cron.php arbeit etwas abseits vom Core und lädt nur die wichtigsten Sachen und lässt sämtliche Einstellungen von WordPress offen. Die in Settings -> General eingestellte Timezone wird dabei nicht berücksichtigt. wp-cron.php läuft also definitiv und unveränderlich auf UTC.
Das heisst also folgendes: Sind wir in der Zeitzone Berlin ist die lokale Zeit UTC+1. Tragen wir ein Scheduled Event ein, hängt er immer eine Stunde nach. Um das zu ändern hilft folgende Funktion:
function get_offset_to_gmt_in_seconds() {
$current_timezone_offset = get_option( 'gmt_offset' );
$offset = $current_timezone_offset * 3600;
return $offset;
}
Gastbeitrag

Dieser Beitrag ist aus der Feder von Thomas Herzog - hughwillfayle.de und ist ein Beitrag zum Adventskalender auf wpengineer.com zum Thema WordPress.
Thomas Herzog ist Webentwickler im Team der WordPress Agentur - Inpsyde GmbH.
Vielen Dank auch hier nochmal von meiner Seite an Thomas.
Müsste man dabei aber nicht auch noch die Sommerzeit (+2h statt +1h) berücksichtigen? Denn UTC als Richtzeit folgt diesen Wechseln ja nicht.
@Marvin: Brauchst du nicht berücksichtigen. WordPress baut sich den GMT-Offset selbst zusammen, auch wenn bei uns Zeitumstellung ist
Bist du sicher dass der GMT Offset automatisch zusammen gebaut wird? Ein Freund von mir hatte eine unglückliche Überraschung ..
@Thomas - Wie Du sagst handelt es sich doch bei dem WP Cron nicht um einen Cron im eigentlichen Sinne sondern um einen "Pseudo Cron" der initiert wird wenn ein Besucher in einem bestimmten Zeitfenster auf die Seite kommt. Es kann doch also u.U. sein, dass der Cron nie ausgeführt wird weil keine Traffic auf der Seite ist oder irre ich mich da?
@Nicole: Der interne Cron von WordPress ist tatsächlich ein sogenannter Poormanscron, der an den Seitenaufruf gekoppelt ist. Sofern möglich würde ich diesen immer deaktivieren und einen echten Cron-Job nutzen:
http://www.wlabs.de/1026/wordpress-auf-echten-cronjob-umstellen/
@Thomas - Wie Du sagst handelt es sich doch bei dem WP Cron nicht um einen Cron im eigentlichen Sinne sondern um einen "Pseudo Cron" der initiert wird wenn ein Besucher in einem bestimmten Zeitfenster auf die Seite kommt. das verstehe ich nich was du damit meinst . Es kann doch also u.U. sein, dass der Cron nie ausgeführt wird weil keine Traffic auf der Seite ist oder irre ich mich da? das habe ich letzten bemerkt und mich gewundert wie das sein kann!
ich find auch das so etwas unhöfliches hier nichts zu suchen hat und dieser User dann gelöscht werden sollte! oder sien kommentar!!
MfG
Andi
Geht das Ganze auch auf älteren Blogs? Habe noch nen Blog mit Version 2.9 und diese muss ich auch beibehalten, da es das eine Plugin, welches ich nutze leider nicht auf WordPress 3.0 geht.
@nadja: ja, ist auch dort nutzbar