DiscourseConnect и часовой пояс / местоположение пользователя

Привет, @troygrady, извините за медленный ответ (я отвечаю на вопросы по плагину WP Discourse). Я отдельно рассмотрю настройки часового пояса и местоположения (они не связаны между собой).

Часовой пояс

Можете ли вы уточнить, имеете ли вы в виду, что хотите, чтобы активность пользователей отображалась для них в их местном времени? Если да, то, в отличие от WordPress, в Discourse это сейчас установлено по умолчанию (без использования DiscourseConnect) и автоматически обновляется, если пользователь не задаст его вручную. Например, недавно я переехал из часового пояса Australia/Perth в Europe/Oslo. Я не менял настройку часового пояса в своём профиле здесь, на meta, и теперь она отображается так:

Хотите ли вы поведения, отличного от этого?

Местоположение

Вы можете синхронизировать местоположение, установленное в профиле пользователя WordPress, с полем местоположения в профиле пользователя на Discourse. По умолчанию синхронизация не работает, так как в WordPress нет стандартного поля, эквивалентного полю местоположения в Discourse. Вам нужно добавить немного кода. В файле functions.php вашей темы или в другом месте, где можно добавлять код, необходимо добавить что-то вроде следующего, используя фильтр wpdc_sso_params:

function sync_discourse_location( $params, $user ) {
    $location = get_user_meta( $user->ID, 'user_location_meta', true );
    if ( $location  ) {
        $params['location'] = $location;
    }
    return $params;
}
add_filter( 'wpdc_sso_params', 'sync_discourse_location', 10, 2 );

Обратите внимание, что вам нужно заменить ‘user_location_meta’ на имя мета-поля пользователя, которое используется для хранения местоположения пользователя на вашем экземпляре WordPress (то есть на то поле, которое используется плагином, добавляющим местоположения пользователей в WordPress).

Также обратите внимание, что поле местоположения в Discourse — это просто поле типа “строка”, что означает, что оно будет отображать введённое в него значение буквально. Оно не влияет на часовой пояс пользователя и не является геолокацией (то есть не связано с картами каким-либо образом).