結論から書くと「ICL_LANGUAGE_CODE」ではなく、「wpml_current_language」を使うようにしましょうという記事です。
WordPressを多言語化する優良プラグイン「WPML Multilingual CMS」において、言語コードで条件分岐をかけたい時の処理について記します。
「WPML 条件分岐」などでGoogle検索すると、上位表示される日本語の紹介記事では「ICL_LANGUAGE_CODE」を使えば出来ると紹介されていますが、それはもう古い情報で非推奨のため使用しないように気をつけましょう。
2023年現在では「wpml_current_language」という別の方法(フック)を使用する事が、WPML公式ドキュメントにて強く推奨されています。
- ↑WPML公式ドキュメント「ICL_LANGUAGE_CODE」は、非推奨だから使わないでねと記載されている。
WordPress多言語化プラグイン「WPML」で条件分岐させる方法
WPML公式ドキュメント「How to Get Current Language with WPML」に記載されているフックを使って、WordPressテーマ側で「英語だったら」「日本語だったら」の条件分岐が実現出来ます。
- 1. 推奨されているフックを使う関数を「functions.php」に追加
- 2. テーマファイルでif文を使い条件分岐する
「wpml_current_language」用の関数をfunctions.phpなどに追加
まず、「functions.php」など読み込み順序が早いテンプレートに、WPML公式が推奨しているフックを使い、言語コードを取得する関数を作成します。
※WPML公式ドキュメントでは、ショートコードとして追加する方法を例として紹介されていますが、本記事では条件分岐に使いたい場合を想定して関数のままにしています。
function get_language() {
return apply_filters( 'wpml_current_language', null );
}
関数を追加したら、条件分岐をしたいテーマファイルで、以下のように振り分けられます。
$current_language = get_language();
// 英語だったら
if ($current_language === 'en') {
// ここに英語の時だけの処理
}
// 日本語だったら
if ($current_language === 'ja') {
// ここに日本語の時だけの処理
}
WPML「ICL_LANGUAGE_CODE」は非推奨なのに何で上位表示されるの?
日本のGoogle検索では、「WPML 条件分岐」と検索した場合、2022年や2021年の比較的最近の記事でも「ICL_LANGUAGE_CODE」を使う紹介記事しかヒットしませんでした。
本記事に辿り着いた方が何かしらの問題を抱えているなら、解決のヒントになれば幸いです。
また今後気をつけて欲しいポイントとして、WEBやプログラミングなど技術に関する情報をインプットする時は「公式のドキュメントから読む」という事です。
何故かと言うと日本のブロガーさん達は、「日本語で検索して、上位表示されている情報をもとに、記事を書く」という事をします。
そのため、上位表示されているSEOに強いサイトや記事の情報でも、誤っていたり、今回のような非推奨になっている古い情報だったりします。制作や開発に関わる方は、”まず公式の情報”を見る。英語が分からない場合でも「DeepL」や「Google翻訳」を使って概要を把握する。概要さえ分かれば、「コードは英語」で書かれているので、英語記事でも意外とサクッと問題解決出来ますよ。
English:
↓
Japanese: (※DeepLや、Google翻訳なども精度が上がっているので、英語ドキュメントでも全然理解出来ますよの例)
「wpml_current_language」の使用方法について
ちなみにWPML公式ドキュメントの掲載されている「wpml_current_language」では、推奨しているフックを使い、最終的にショートコードを追加して「言語を表示させる」例が掲載されていました。
「ショートコード」では、テーマ内で使い勝手が良くないため、本記事の冒頭では「get_language」関数として紹介しています。
function get_language_shortcode() {
return apply_filters( 'wpml_current_language', null );
}
add_shortcode( 'language', 'get_language_shortcode' );
WordPressプラグイン「WPML」で条件分岐したい時の要点まとめ 【2023年】
- フック「wpml_current_language」を使う。
- 定数「ICL_LANGUAGE_CODE」は非推奨なので使わない。
- 公式ドキュメントから、まず読もう。
- 日本語記事を見ても、結局遠回りする事になるから、英語の記事や情報を恐れない。