Как изменить часовой пояс для rss WordPress на +0300?

Ссылка скопирована
1 ответ

Привет, столкнулись с проблемой, а именно в стандартной rss ленте на WordPress часовой пояс не верный, сейчас идет в таком формате:

Sun, 28 May 2023 10:05:14 +0000

А должен выдавать:

Sun, 28 May 2023 10:05:14 +0300

На сервере все настроено как и на самом сайте, почему часовой пояс не +0300, куда смотреть?

Спасибо!

Дополнительно:

Ответы:

В WordPress обычно используется функция mysql2date(), чтобы преобразовать дату и время в формат, используемый в RSS-ленте. Если вам нужно изменить часовой пояс в этой функции, вы можете использовать функцию date_default_timezone_set() перед вызовом mysql2date(), чтобы временно изменить часовой пояс.

Пример использования date_default_timezone_set():

date_default_timezone_set('Europe/Moscow'); // Установка часового пояса на Московское время $date = mysql2date('D, d M Y H:i:s O', $your_date); // Замените $your_date на вашу переменную с датой

date_default_timezone_set('Europe/Moscow'); // Установка часового пояса на Московское время $date = mysql2date('D, d M Y H:i:s O', $your_date); // Замените $your_date на вашу переменную с датой

Замените 'Europe/Moscow' на ваш часовой пояс. Список поддерживаемых часовых поясов можно найти на официальном сайте PHP: https://www.php.net/manual/en/timezones.php

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
WordPress-редакция Ответ

В RSS WordPress дата в формате +0000 часто выводится не потому, что на сайте неправильно настроен часовой пояс, а потому что для некоторых полей ленты WordPress использует GMT-время. Для RSS это нормальная практика. Если задача именно получить +0300, сначала проверьте настройки в Настройки -> Общие -> Часовой пояс: лучше выбрать город, например Москва, а не ручное смещение.

Если нужно изменить дату в RSS принудительно, можно переопределить вывод даты через фильтр. Например, для даты публикации элемента:

add_filter('get_post_time', function ($time, $format, $gmt, $post, $translate) {
    if (!is_feed() || 'D, d M Y H:i:s O' !== $format) {
        return $time;
    }
 
    $timestamp = get_post_timestamp($post);
    if (!$timestamp) {
        return $time;
    }
 
    $date = new DateTimeImmutable('@' . $timestamp);
    $date = $date->setTimezone(wp_timezone());
 
    return $date->format('D, d M Y H:i:s O');
}, 10, 5);

add_filter('get_post_time', function ($time, $format, $gmt, $post, $translate) { if (!is_feed() || 'D, d M Y H:i:s O' !== $format) { return $time; } $timestamp = get_post_timestamp($post); if (!$timestamp) { return $time; } $date = new DateTimeImmutable('@' . $timestamp); $date = $date->setTimezone(wp_timezone()); return $date->format('D, d M Y H:i:s O'); }, 10, 5);

Но я бы не начинал с такого сниппета. Сначала проверьте:

  • какой timezone указан в настройках WordPress;
  • не кэшируется ли RSS плагином кэша или CDN;
  • какая именно дата неверная: lastBuildDate, pubDate или кастомное поле плагина;
  • нет ли в теме или плагинах своего шаблона RSS.

Если проблема только визуальная, а время соответствует UTC, это не ошибка. RSS-клиенты нормально понимают +0000. Менять смещение стоит только если внешний сервис требует именно +0300.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно