DiscourseConnectとユーザーのタイムゾーン/場所

@troygrady様、返信が遅くなり申し訳ありません(WP Discourseプラグインに関する質問に対応しています)。タイムゾーンと場所の設定は(関連性がないため)別々に説明します。

タイムゾーン

ユーザーのアクティビティがユーザー自身のローカルタイムで表示されることを意味しますか?もしそうであれば、WordPressとは異なり、これは現在Discourseのデフォルトであり(DiscourseConnectを使用せずに)、ユーザーが設定しなくても自動的に更新されます。例えば、私は最近タイムゾーンを「Australia/Perth」から「Europe/Oslo」に変更しました。ここmetaのプロファイルでタイムゾーン設定を変更していませんが、次のように表示されています。

これとは異なる動作をご希望ですか?

場所

WordPressのユーザープロファイルで設定された場所を、Discourseのユーザープロファイルの場所フィールドと同期させることができます。デフォルトでは同期されません。なぜなら、Discourseの場所フィールドに相当する標準的なWordPressのフィールドが存在しないからです。ここにコードを追加する必要があります。テーマの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の場所フィールドは単なる「文字列」フィールドであり、入力されたものをそのまま表示するだけであることにも注意してください。ユーザーのタイムゾーンには影響せず、ジオロケーション(マッピングに関連付けられている)でもありません。

「いいね!」 1