Вопрос или проблема
В настоящее время я использую WordPress, и элемент user_registered возвращает время регистрации пользователя. Я установил правильный часовой пояс, но не знаю, как получить вывод user_registered, чтобы он соответствовал моему текущему времени. На данный момент у меня есть следующее.
date_default_timezone_set('America/Los_Angeles');
$users = get_users();
foreach( $users as $user ) {
$udata = get_userdata( $user->ID );
$registered = $udata->user_registered;
printf( '%s член с %s<br>', $udata->data->display_name, date( "Y-m-d H:i:s", strtotime( $registered ) ) );
}
echo('дата ниже <br>');
echo date('Y-m-d H:i:s');
Функция date_default_timezone_set действительно меняет часовой пояс (последний echo). Однако я хочу изменить вывод user_registered. (что является сохраненным временем).
Как мне глобально изменить способ отображения времени, когда оно вызывается? Другими словами, если я запрашиваю дату/временную метку через плагин или напрямую, она всегда будет выдавать вывод America/Los_Angeles.
Спасибо заранее. Я новичок. Обратите внимание, что echo и printf используются исключительно для временного отображения. Я хочу изменить способ отображения user_registered, когда он вызывается из плагина или напрямую.
Если можно использовать JavaScript или jQuery, я открыт для предложений.
Вы можете получить смещение времени из настроек WordPress, используя
get_option( 'gmt_offset' )
Поэтому я нашел самый простой метод сделать это:
gmdate( 'Y-m-d H:i:s', strtotime( get_option( 'gmt_offset' ) . ' hours', strtotime( $udata->user_registered ) ) )
На странице Настройки > Основные найдите раздел с заголовком Часовой пояс. Выберите город в том же часовом поясе, что и вы.
Ответ или решение
Конечно! Давайте разберемся, как вы можете отобразить время регистрации пользователя в правильном часовом поясе в WordPress.
Шаг 1: Убедитесь, что часовой пояс установлен правильно
Прежде всего, убедитесь, что ваш часовой пояс правильно настроен в настройках WordPress. Для этого перейдите в админпанель WordPress в Настройки > Общие и найдите раздел Часовой пояс. Выберите город, соответствующий вашему часовому поясу.
Шаг 2: Получение времени регистрации пользователя с учетом часового пояса
В вашем коде вы уже начали правильно использовать функцию strtotime()
и date()
, но вам нужно учесть часовой пояс, установленный в WordPress. Сделать это можно с использованием функции get_option('gmt_offset')
, чтобы получить смещение от GMT, и применить его при выводе времени.
Вот пример того, как это можно сделать:
// Получаем пользователей
$users = get_users();
foreach ($users as $user) {
$udata = get_userdata($user->ID);
$registered = $udata->user_registered;
// Получаем смещение в часах
$gmt_offset = get_option('gmt_offset');
// Применяем смещение и выводим время
$local_time = gmdate('Y-m-d H:i:s', strtotime($registered) + ($gmt_offset * 3600));
printf('%s зарегистрирован с %s<br>', esc_html($udata->data->display_name), esc_html($local_time));
}
// Временной вывод для текущего времени
echo('Текущее время: <br>');
echo esc_html(date('Y-m-d H:i:s'));
Объяснение кода
- Мы получаем всех пользователей через
get_users()
. - Для каждого пользователя извлекаем информацию о данных пользователя с помощью
get_userdata()
. - Получаем время регистрации через
$udata->user_registered
. - Используя
get_option('gmt_offset')
, мы получаем смещение от GMT для нашего часового пояса и преобразуем его в секунды (умножаем на 3600). - И, наконец, используем
gmdate()
для форматирования времени с учетом смещения.
Шаг 3: Глобальная настройка
Если вы хотите, чтобы время показывалось в правильном часовом поясе повсеместно (не только в вашем конкретном коде), в WordPress это уже реализовано через использование функций, таких как get_option('gmt_offset')
. Таким образом, вы можете использовать представленный выше метод в любом месте вашего кода, чтобы показывать локализованное время регистрации пользователя.
Альтернатива с использованием JavaScript
Если вы хотите использовать JavaScript или jQuery, чтобы динамически отображать время, вы можете передать серверное время и затем корректировать его на стороне клиента с использованием библиотек, таких как Moment.js. Однако для вывода времени с учетом часового пояса server-side подход, как описано выше, будет проще и эффективнее.
Надеюсь, это поможет вам правильно настроить отображение времени регистрации пользователей! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.