Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/manyatee/www/manyatee-com/wp/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 77

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/manyatee/www/manyatee-com/wp/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 87

Warning: count(): Parameter must be an array or an object that implements Countable in /home/manyatee/www/manyatee-com/wp/wp-includes/post-template.php on line 284

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'custom_excerpt_length' not found or invalid function name in /home/manyatee/www/manyatee-com/wp/wp-includes/class-wp-hook.php on line 298

WordPressの多言語化プラグイン「WPML Multilingual CMS」を活用しつつ各言語用のテンプレートを適用させる方法

最近、仕事の関係で、3ヶ国語対応のサイトをWordpressで作っているのだが、 ヘッダーとかフッターとかサイドバーとか各言語ごとにかなり違う内容なので(そもそも言語違うしね)、 どげんか対応せんと!とPHP初心者の私はチョー戸惑った。 おかげ様で解決したんだけど、検索してもこの手の記事が出てこなかったので(え、初歩中の初歩だから?><)、 その忘備録を自分のために記して曰く…_〆(´ω` ;) * 多言語化プラグインは「WPML Multilingual CMS」の無料版を使用しました。 自力で翻訳した記事をそれぞれの言語ページに流しこむ系プラグインはqTranslateが割と主流のようなんだけど、 WPMLを選んだのは、ネ申プラグイン・カスタムフィールドテンプレート をそれぞれの言語で使うためですた。 それでは、「この言語だったらこのコードを表示するよ」っていうソースコードは以下のとおり。
<?php if (ICL_LANGUAGE_CODE == '言語コード') { ?>  
    //上記言語コードの言語用に作ったページのソースコード全部ぶっこむ
<?php } ?>  
言語コードは、WPMLの設定ページでわかると思います。 以上のノリで、例えばindex.php内はこんな感じにします。(英語、日本語、イタリア語の場合)
<?php if (ICL_LANGUAGE_CODE == 'en') { ?>  
 //英語用に作ったページのソースコードを全部ぶっこむ
<?php } ?>  
<?php if (ICL_LANGUAGE_CODE == 'ja') { ?>  
 //日本語用に作ったページのソースコードを全部ぶっこむ
<?php } ?>  
<?php if (ICL_LANGUAGE_CODE == 'it') { ?>  
 //イタリア語用に作ったページのソースコードを全部ぶっこむ
<?php } ?>  
はいキタ! 「ページのソースコードを全部ぶっこむ」、楽だよね! PHPを含んだ文でもばっちこいやと。 index.php、page.php、single.php、archive.php、カスタムテンプレートページなどに適応すると良いでしょう。 ちなみに、デフォルト以外のテンプレートファイルを読み出すときは以下のコードを使いましょね。 (ヘッダーとかフッターとかそれぞれの言語用に作ったのを呼び出すのに使う、と。)
<?php include( TEMPLATEPATH . '/header_en.php' ); ?>
以上、最高に力技な方法でした。まる。 さーらーにーちなみに、レイアウトが崩れる可能性があってね。 そんな時は、↓こういうふうにすると解決するかも。
<?php if (ICL_LANGUAGE_CODE == 'it') { ?><?php include( TEMPLATEPATH . '/header_en.php' ); ?>
//中略
<?php get_footer(); ?><?php } ?>  
ってか、Custom Field Template plugin側で制御すればさぁ・・・と今更思ったり。精進します。。。 まぁ誰かのお役にたてますように・・・。 (しっかしいくら自分のためとはいえ、tipsというカテゴリの記事を書くとは思わなかった。)

☆参考にさせて頂いたページ:wordpressの多言語化プラグイン「qTranslate」

| |


コメントを残す


]