WordPressで現在のロケールを確認する方法を調べてみました。
get_locale()
現在のロケールを取得するときは、get_locale()関数を使用します。
- <p>現在のロケール:<?php echo get_locale(); ?></p>
get_locale()関数は、次の優先順位で現在のロケールを決定します。
- localeフィルターの結果
get_locale()関数内で②③④の優先順でロケール名を決定した後、localeフィルターにロケール名が渡され、その結果がリターンされます。ロケール名を強制的に統一したいときなどに、このフィルターを使用します。
- add_filter( 'locale' , 'my_locale' );
- function my_locale( $locale ){
- return 'ja'; // 'ja' に強制
- }
AFFS Simple Code ViewerCopy - 一般設定のサイトの言語で指定されているロケールの名前
管理画面で設定した値ですね。

この画面で設定した値は、データベースのoptionテーブルに登録されていて、次のコードで取得できます。
- $db_locale = get_option( 'WPLANG' );
AFFS Simple Code ViewerCopy - 定数WPLANGの値
定数WPLANGは、デフォルトでは定義されていません。
定数を使用する必要があるなら、次のように定義します。- if( ! defined( 'WPLANG' ) ) {
- define( 'WPLANG', 'ja' );
- }
AFFS Simple Code ViewerCopyなお、get_locale()関数はテーマのfunction.phpやプラグインコードが実行される前に、数回呼び出されます。
全てのget_locale()関数実行結果に影響を与えたいときは、wp-config.phpに記述しましょう。 - グローバル変数$wp_local_packageの値
英語版?のWordPressには、この変数は定義されていません。
5.9.3-jaなどの他言語版?をインストールすると、/wp-includes/version.php に記述されています。
ほぼ①と②で決定されます。
②③④で値が取得できない場合、'en_US'が規定値となります。
get_user_locale( $user_id = 0 )
WordPressはユーザーごとにロケールを設定できます。

get_user_locale()関数は、ユーザーIDを引数として受け取り、ユーザー管理画面で指定されているロケールの名前を取得します。
引数が省略された場合、カレントユーザーが適用されます。
次のコードは、ログインしているかどうか確認して、ログインユーザーの情報を表示しています。
- <?php
- if( is_user_logged_in() ){
- $name = wp_get_current_user()->display_name;
- $locale = get_user_locale();
- echo "<p>{$name}がログインしています</p>";
- echo "<p>{$name}のロケール:{$locale}</p>";
- }
- ?>
determine_locale()
determine_locale()関数は、URLのクエリで指定されているロケールの名前を取得します。
この関数の結果は、次の優先順位で決定されます。
- pre_determine_localeフィルターの結果
関数の最初のコードでpre_determine_localeフィルターが実行されます。
初期値はnullです。
フィルターが文字列を返すと、その値を関数の実行結果として終了です。- add_filter( 'pre_determine_locale' , 'my_pre_determine_locale' );
- function my_pre_determine_locale( $locale ){
- return 'ja'; // 'ja' に強制
- }
AFFS Simple Code ViewerCopy - determine_localeフィルターの結果
関数の最後でdetermine_localeフィルターが実行されます。
初期値は関数内で求められたロケールです。
フィルターが文字列を返すと、その値を関数の実行結果として終了です。- add_filter( 'determine_locale' , 'my_determine_locale' );
- function my_determine_locale( $locale ){
- return 'ja'; // 'ja' に強制
- }
AFFS Simple Code ViewerCopy - ログイン画面(wp-login.php)表示時に、URLにwp_langクエリが指定されている
wp_langクエリの値が、関数の結果となります。
例えば、ログインページを次のようなURLで開くと、英語で表示されます。
https://ドメイン名/wp-login?wp_lang=en_US
※wp_langクエリがない場合、wp_langクッキーが確認されます。
- ブラウザがJSONをリクエストしていて、_localeクエリが指定されていて、クエリの値が'user'
get_user_locale()関数の結果が返ります。 - 管理画面のとき
get_user_locale()関数の結果が返ります。 - いずれも当てはまらないとき
get_locale()関数の結果が返ります。
使う機会は、あまりなさそうです・・・
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール





こんにちは。