【WordPress】多言語対応 404 エラーページ
ホームページを制作する場合はページが存在しない時のために表示するページを作成しておく.
いわゆる 404 Page Not Found の 404 ページのことである.
ページが見つからない時,その URL に相当するページが存在しない時に表示するページのことである.

WordPress の場合,404.php という名前でテーマファイルの中に入れれば,通常はそれが表示される.
日本語以外に英語や中国語のページを一つの WordPress で制作している場合,404.php で場合分けする必要がある.
検索してもそのものが見つからなかったので投稿しておく.
どのような条件で表示を変えるか
日本語ページと英語ページはカスタム投稿タイプなどで作り分けていると思うが,404 Page Not Found のページはそもそも日本語?英語?どっちで表示すればいいのか?
英語のページの打ち間違いなのか,日本語ページの存在していないページに行ってしまったのか,それは URL だけでは判別できない.そもそもそんな URL のページは存在していないのだから.
そんな場合はブラウザの設定がどういう言語になっているかで判別するしかない.
PHP でブラウザの言語判別
WordPress の場合,PHP でブラウザの言語を判別する必要がある.
例えば,日本語と中国語とそれ以外(英語)に分ける場合は以下のようになる.
header-en.php や header-zh.php を作っている場合は以下のようにする.
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang == 'ja') {
$lang = '';
<?php } elseif ($lang == 'zh') { ?>
$lang = 'zh';
<?php } else { ?>
$lang = 'en';
<?php };
get_header($lang);
?>
本文の方は先ほどの続きで書くと
<?php if ($lang == '') { ?>
日本語表記
<?php } elseif ($lang == 'zh') { ?>
中国語表記
<?php } else { ?>
英語表記
<?php } ?>
参考)
ブラウザの表示言語一覧は 環境変数 HTTP_ACCEPT_LANGUAGE - futomi's CGI Cafe
ブラウザ Chrome の言語変更は Chrome の言語の変更とウェブページの翻訳