Intereting Posts
Можно ли беспокоиться о том, чтобы санировать вход администратора в пользовательский CSS-плагин? Передача args в WP_User_Query Я использую мета правильно? Как заставить слайдер javascript работать! Изменение тематических страниц на языковом коммутаторе Добавить удаление, одобрение, спам Ссылки на комментарии Предупреждение array_filter – wp-includes / post.php line 3148 Обрезаемая фатальная ошибка в персонализированной публикации категории wp_get_attachment_url (get_post_thumbnail_id ($ post-> ID)); Получение большого пальца от неправильной петли как предотвратить или прервать просмотр страницы автора для конкретной роли пользователя автоматически добавьте родительский пункт меню в качестве первого элемента в подменю с помощью nav_walker Алфавитные сообщения на странице категории? Мне нужно показывать сообщения от клиента (Shortcode) Что вы добавляете в тег автора темы для детей? Изменить постоянную ссылку для архива по умолчанию – ежегодно Использование Shortcode для захвата списка архивов, раздельно по годам

Можно ли использовать 'date_default_timezone_set' в файле плагина?

Я использую плагин sitemaps, который очень сложным образом устанавливает часовой пояс для <lastmod> (т.е. последнего измененного времени) для сообщений в GMT.

Временно, пока разработчик плагина не исправляет это, мне нужно обеспечить соблюдение пользовательского часового пояса в плагине . Простым и простым способом, который я нашел, является добавление чего-то типа date_default_timezone_set( 'America/New_York'); сразу после первого <?php в файле, ответственном за вывод файлов Sitemap.

Он работает, и, похоже, он не влияет на отметки времени, отображаемые на остальной части сайта. Итак, могу ли я пойти с этим? или есть лучшее решение?

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

Замените все экземпляры get_the_date или the_date с помощью echo get_gmt_from_date(get_the_date('Ymd H:i:s')) . Это не быстрое решение, это способ исправить ваши файлы Sitemap.

РЕДАКТИРОВАТЬ:

WordPress SEO запускает исходные даты из MySQL через функцию WP, называемую mysql2date , которая, в свою очередь, вызывает date_i18n . date_i18n имеет удобный фильтр, который вы можете связать, чтобы изменить дату:

 <?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 = 'Ymd\TH:i:s-05:00'; return $gmt ? gmdate($f, $timestamp) : date($f, $timestamp); } 

В функции hooked вы можете проверить переменную запроса sitemap и изменить время по мере необходимости. Чтобы сохранить спецификацию sitemap , вы должны использовать формат даты W3C, который включает в себя +/- поле для часового пояса. -05: 00 – это номер для центрального, летнего времени. Вы можете обернуть вышеуказанное в плагин и активировать его до тех пор, пока карта сайта не будет исправлена.

В настоящее время встроенная функция current_time() ожидает, что функция date_default_timezone_set() никогда не используется.

Проверка этого кода current_time() подтвердила это, поскольку эта функция форматирует результат с помощью встроенной функции date() PHP (которая зависит от часовой пояс); на самом деле кажется, что WordPress всегда сбрасывает часовой пояс в UTC ( echo date_default_timezone_get() размещенный сверху и снизу wp-config.php в чистой установке WordPress, докажет это).

См. https://core.trac.wordpress.org/ticket/38940