it-swarm.com.de

Ist es sicher, 'date_default_timezone_set' in der Plugin-Datei zu verwenden?

Ich verwende ein Sitemaps-Plugin, das auf sehr komplexe Weise die Zeitzone von <lastmod> (d. H. Die letzte geänderte Zeit) für Posts in GMT festlegt.

Vorübergehend muss ich, bis der Plugin-Entwickler das Problem behoben hat, eine benutzerdefinierte Zeitzone erzwingen für das Plugin . Die einfache und unkomplizierte Möglichkeit, die ich gefunden habe, besteht darin, etwas wie date_default_timezone_set( 'America/New_York'); direkt nach dem ersten <?php in die Datei einzufügen, die für die Ausgabe der Sitemaps verantwortlich ist.

Es funktioniert und es scheint keine Auswirkungen auf Zeitstempel zu haben, die auf dem Rest der Site angezeigt werden. Also, kann ich damit weitermachen? oder gibt es eine bessere lösung

3
its_me

http://codex.wordpress.org/Function_Reference/get_gmt_from_date

Ersetzen Sie alle Instanzen von get_the_date oder the_date durch echo get_gmt_from_date(get_the_date('Y-m-d H:i:s')). Das ist keine schnelle Lösung, sondern eine Möglichkeit, Ihre Sitemaps zu reparieren.

BEARBEITEN:

WordPress SEO führt die Rohdaten von MySQL über eine WP -Funktion namens mysql2date aus, die wiederum date_i18n aufruft. date_i18n hat zufällig einen praktischen Filter, mit dem Sie das Datum ändern können:

<?php
add_filter('date_i18n', 'wpse57195_filter_date', 10, 4);
/**
 * Changes the date on WordPress SEO's sitemaps
 *
 * @return string The Date
 */
function wpse57195_filter_date($date, $format, $timestamp, $gmt)
{
    // if this isn't a sitemap page, bail
    if(!get_query_var('sitemap'))
        return $date;

    // W3C Time format with -05:00 for central time
    // NOTE: this doesn't account for daylight saving time
    $f = 'Y-m-d\TH:i:s-05:00';
    return $gmt ? gmdate($f, $timestamp) : date($f, $timestamp);
}

In der Hook-Funktion können Sie nach der Sitemap-Abfragevariablen suchen und die Zeit nach Bedarf ändern. Um die Sitemap-Spezifikation beizubehalten, müssen Sie das W3C-Datumsformat verwenden, das ein +/- -Feld für die Zeitzone enthält. -05: 00 ist die Nummer für die zentrale Sommerzeit. Sie können das oben genannte up in ein Plugin einpacken und es aktivieren, bis die Sitemap repariert werden kann.

1
chrisguitarguy

Derzeit erwartet die integrierte Funktion current_time(), dass die Funktion date_default_timezone_set() niemals verwendet wird.

Die Überprüfung des Codes von current_time() hat dies bestätigt, da diese Funktion das Ergebnis mit der in PHP integrierten Funktion date() formatiert (die von der Zeitzone beeinflusst wird). Tatsächlich scheint Wordpress die Zeitzone immer auf UTC zurückzusetzen (eine echo date_default_timezone_get(), die in einem sauberen WordPress-Setup oben und unten in wp-config.php platziert wird, wird dies beweisen).

Siehe https://core.trac.wordpress.org/ticket/38940

1
Marco Marsala

Nein. (Sie können es sofort wieder zurücksetzen, wenn Sie fertig sind, aber das ist fehleranfällig.)

Was auch immer Sie tun, überschreiben Sie nicht date_default_timezone_set () in Ihrem wp-config.php; wp-settings.php setzt dies auf UTC und Sie dürfen es nicht ändern.

Wenn Sie zum Beispiel nach Europa/London fahren (im Sommer eine Stunde vor GMT), ist GMT eine Stunde vor dem, was es sein sollte - Sie können dies über /wp-admin/options-general.php überprüfen.

Im Wesentlichen bedeutet dies, dass Werte der System-Zeitzone /etc/timezone und des ini-Werts von PHP date.timezone von WordPress ignoriert werden.

IMHO, es sollte eine Art Warnung in WordPress Core geben, wenn es auf einen anderen Wert als UTC eingestellt ist, aber es gibt keine, also Vorsicht.

Verwandte WPSE Frage - Verwandte Blog

0
William Turrell