@uta_san さん
こんにちは。
タグクラウドグループの出し方は the_tags(); とかだと思いますが、
条件分岐の方法でいえば、事前に
functions.php
/**
* ブラウザーの言語設定を取得する
* 英語か日本語のみを取得
* @return string 言語設定()
*/
function get_browser_locale(){
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if(isset($languages) ){ //languagesが空ではないとき
if($languages[0] === "en-US" || is_include_en_slug()) {
return 'en_US';
}
}
return 'ja';
}
/**
* スラッシュで区切ったURL内に「en」があればtrue
*
* @return string URL末尾
*/
function is_include_en_slug()
{
$url = $_SERVER['REQUEST_URI'];
$array_slug = explode("/", $url);
if(in_array("en", $array_slug, true)){
return true;
}
return false;
}
のような関数で言語設定を行っておいて、
$locale = get_browser_locale();
if($locale === 'en_US'){
//英語処理
}else{
//それ以外の処理
}
のような記述になるかと思います。
Kenji Yanagiya様
この度はご回答頂き誠にありがとうございます!
また返信が遅くなり申し訳ありません。
上のコードを試してみました。
コードを読んでみてこれで行けると思うのですが、一点だけ、「* スラッシュで区切ったURL内に「en」があればtrue」の箇所ですが、ベース言語を英語にしているため、BOGOではURLに「en-US」が表示されません。そのためか、すべて日本語条件の処理しか行われないようになってしまいました。
この場合、どうしたらよいのでしょうか?
もしよければ、お願い致します。
@uta_san さん
こんにちは。
すみません、以前実案件で利用したコードから転用したため、不要な記述が入っていました。ので削除した以下記述で分岐出来るはずです。
* 英語か日本語のみを取得
* @return string 言語設定()
*/
function get_browser_locale(){
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if(isset($languages) ){ //languagesが空ではないとき
if($languages[0] === "en-US") {
return 'en_US';
}
}
return 'ja';
ブラウザの出力する言語設定で、一番最初に出てくるもものが優先度高いので、英語を判定する方法となります。
https://pulogu.net/blog/020-computer/php/php-server-variable-http_accept_language-value-web-browser-language-settings/
こちらの記事内での検証にて分かるように、優先言語を英語にしていれば最初の出力がen_USになるかと思います。
Kneji Yanagiyaさん
ご回答ありがとうございます!!
上の回答大変参考になりました。
その上で色々試したり、探したりした結果、私のやりたかったことだけなら以下の方法でできることができました。
<?php
$locale = get_locale();
if($locale == ‘en_US’){
//英語処理
}else{
//日本語処理
}
?>
ありがとうございました。またどうぞお願い致します!!