Спасибо, Энгус! И не переживай из-за задержки.
Извини за путаницу! Да, местный часовой пояс, и да, стандартное поведение Discourse отлично подходит. Как ты и указал, проблема не в Discourse, а в WordPress, который не позволяет пользователям видеть сайт в их местном часовом поясе. Именно это мы хотим добавить. Если мы дадим пользователю возможность установить свой часовой пояс, то я подумал, что нам следует также сделать так, чтобы этот параметр переопределял настройку в Discourse, чтобы они были синхронизированы. Вот что я хотел узнать: предоставляет ли это DiscourseConnect. Похоже, что нет.
То, что я не учел, это то, что настройка в Discourse автоматическая. Если это так, мы, возможно, просто оставим всё как есть. То есть реализовывать местный часовой пояс в WordPress, но не позволять этому значению переопределять значение в Discourse. Да, они могут рассинхронизироваться, но для большинства пользователей это может не стать проблемой.
Вы можете синхронизировать локацию, установленную в профиле пользователя WordPress, с полем локации в профиле пользователя на Discourse. По умолчанию синхронизация не работает, так как в WordPress нет стандартного поля, эквивалентного полю локации в Discourse.
Отлично, это недостающий кусочек информации — я не знал, откуда DiscourseConnect должен получать данные о локации на стороне WordPress. Мы реализовали наше собственное поле локации вручную в usermeta, поэтому мы можем просто извлечь значение оттуда, используя хук wpdc_sso_params.
Я, наверное, был невнимателен и упустил это. Есть ли где-нибудь документация по wpdc_sso_params? Я нашел эту тему, которая, похоже, пока покрывает этот вопрос:
You can update User Fields that you have created on Discourse via SSO. This does not require a plugin. To do this, you need to know the name that Discourse uses in the database for the custom field. The easiest way I know of to do this is by going to your Admin / Customize / User Fields page and then loading the JSON version of the page. For example https://forum.example.com/admin/customize/user_fields.json The JSON data of the page will look something like this: { user_fields: [ { id: 12, nam…