WordPressの管理画面で、どこからでもユーザーの言語切替できるようにする
最近、Wordpress で海外向けのサイトを作る機会が増えてきました。
通常なら、多言語対応のプラグインを使って、フロント側の多言語化の対応を行いますが、
ある案件で、フロントは中国語で、管理画面だけ日本語・英語・中国語の切り替えができるようにという要望をいただきました。
R3DF Dashboard Language Switcher というプラグインでの対応をと思っておりましたが、
最新の WordPress では使えなくなっており、
方法を模索する中で、functions.php への追記で対応する方法がわかりましたので、
ご紹介いたします。
この方法では、ユーザーの言語を、ヘッダーから切り替えられるようにします。
方法
- 目的の言語を WordPress の設定画面 > 一般 > サイトの言語から利用したい言語を追加
- 以下のコードを functions.php に追記
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // 管理画面に言語切替のプルダウンを設置 if(is_admin()) { function my_admin_script() { // 管理画面のヘッダーに、言語切替のプルダウンとスクリプトを設置 // スクリプトでは、change_lang=言語 で変更内容を POST する echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script> $(function() { $(\'#wp-admin-bar-root-default\').append(\'<li id="custom_change_locale"><form method="POST">Language: <select name="change_lang"><option value="ja">日本語</option><option value="zh_CN">简体中文</option><option value="en_US">English</option>/select></form></li>\'); var $form = $(\'#custom_change_locale > form\'); var $select = $form.children(\'select\'); $select.on(\'change\', function() { $form.submit(); }).children(\'option[value="' . get_user_locale() . '"]\').prop(\'selected\', true); }); </script>'.PHP_EOL; } add_action('admin_print_scripts', 'my_admin_script'); function my_change_user_locale() { // change_lang に POST がされたら、ユーザーの言語を POST された言語に変更して、リロードする if($_SERVER['REQUEST_METHOD']==='POST'){ if(isset($_POST['change_lang'])) { update_user_meta(get_current_user_id(), 'locale', $_POST['change_lang']); header('Location:' . (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); } } } add_action( 'init', 'my_change_user_locale' ); } |
上記では、日本語、中文簡体、英語を切り替えられるようにしています。
9行目で管理画面のヘッダーにプルダウンをセレクトボックスで追加していますが、
ここのセレクトボックスの中の <opiton> を、切り替えたい言語に変えてください。
ここのセレクトボックスの中の <opiton> を、切り替えたい言語に変えてください。
1 | <option value="言語のコード">切り替えたい言語名</option> |
という形式で選べるようになります。
簡体中文の場合、以下のようにします。
1 | <option value="zh_CN">简体中文</option> |
Author Profile
NINOMIYA
Webデザイナー兼コーダー出身のフロントエンド開発者です。 UXデザインやチーム開発の効率化など、勉強中です。
SHARE