Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

見出しテキスト程度であれば言語ファイルを使ったり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というファイルを作ったりしてしまうと動かないような気がしなくもないですが試していません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした