LoginSignup
3
0

More than 5 years have passed since last update.

bogoで表示中の言語ごとに別のテンプレートを使う

Posted at

見出しテキスト程度であれば言語ファイルを使ったりbogoのウィジェットが使えるようですが、コーポレートサイト案件等でそもそも日英でコンテンツ内容自体かわかる場合などにget_locale()での振り分けを都度都度入れていくとメンテナンスが残念になりそうなのでテンプレートごと変更する方法。

英語の時だけ_enというpostfixのついたテンプレートファイルを探し、存在する場合はそっちを使うコード。

functions.php
function select_locale_template($template){
    if(get_locale() == 'en_US'){
        $locale_template = dirname( __FILE__ ) . '/' . basename($template, '.php') . '_en.php';
        if(file_exists($locale_template)){
            $template = $locale_template;
        }
    }
    return $template;
}
add_filter('index_template', 'select_locale_template');
add_filter('404_template', 'select_locale_template');
add_filter('archive_template', 'select_locale_template');
add_filter('author_template', 'select_locale_template');
add_filter('category_template', 'select_locale_template');
add_filter('tag_template', 'select_locale_template');
add_filter('taxonomy_template', 'select_locale_template');
add_filter('date_template', 'select_locale_template');
add_filter('home_template', 'select_locale_template');
add_filter('front_page_template', 'select_locale_template');
add_filter('page_template', 'select_locale_template');
add_filter('paged_template', 'select_locale_template');
add_filter('search_template', 'select_locale_template');
add_filter('single_template', 'select_locale_template');
add_filter('text_template', 'select_locale_template');
add_filter('plain_template', 'select_locale_template');
add_filter('text_plain_template', 'select_locale_template');
add_filter('attachment_template', 'select_locale_template');
add_filter('comments_popup', 'select_locale_template');
add_filter('home_template', 'select_locale_template');

ずらっと並んだadd_filterは階層のフィルターとのことで必要なもののみで問題ないかと思います、詳細は以下。

WordPress テンプレートシステムでは階層にフィルターを適用できます。get_query_template() /en 関数内にあるフィルターはファイル名 "{\$type}_template" です。このとき $type は階層内の拡張子 .php なしのファイル名。
テンプレート階層 - WordPress Codex 日本語版

カスタム投稿の場合の対応については未着手。

そもそもファイル:wp-template-hierarchy.jpgで振り分けできても良さそうなんですが見つかりませんでした。
あと別途ページテンプレートとして_en.phpというファイルを作ったりしてしまうと動かないような気がしなくもないですが試していません。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0