どもです。
携帯機でぷよぷよをやりたいと思いぷよぷよテトリスを買ったら、テトリスが難しすぎて
詰みゲーになりかけてる餅。です。
シナリオモードがテトリスの度に数時間ストップします(´・ω・`)
それはともかくWordPress。
今回の案件は、
「商品一覧(カスタム投稿)を英語サイトにも表示されるようにしたい」です。
英語サイト用テンプレートに出力しなければならないので、テンプレートの頭で
クエリストリングを読み込むようにして…と思ったのですが、
これは……、ちょっとなぁ。
美しくないよなぁ……(´・ω・`)
というわけで、URLもきちんと/en/product/になるようにしようではありませんか。
add_rewrite_rule('en/カスタム投稿名(半角)/([0-9]+)/?$', 'index.php?post_type=カスタム投稿名(半角)&slug=カスタム投稿名(半角)&p=$matches[1]&page&en', 'top');
add_rewrite_rule('en/カスタム投稿名(半角)/([^/]+)/?$', 'index.php?タクソノミー名(半角)=$matches[1]&en', 'top');
add_rewrite_rule('en/カスタム投稿名(半角)/?$', 'index.php?post_type=カスタム投稿名(半角)&en', 'top');
remove_filter('template_redirect', 'redirect_canonical');
まとめてfunctionに投下すればおk。
以前、URLからtaxonomyを消すのに使った、リライトルールの追加です。
上から、single、taxonomy、カスタム投稿トップページのリライトで、一番下のは
singleを表示するために必要(全ての場合に必要か不明だが僕が今回手がけた環境では
必要だった)な、リダイレクトを拒否する命令です。
また、singleとtaxonomyのパーマリンクについては、
singleは「/カスタム投稿名/投稿ID」
taxonomyは「/カスタム投稿名/term」
に、それぞれなっています。
これと異なる設定をしたい場合は、カンマの左側を修正します。
但し、左側を設定が被ってしまうと、当然ながらバグるので注意です。
これで、異なるURLで同じページを吐き出すことができました。
とはいえ、このままでは使用するテンプレートも同じなので、テンプレートにPHPをひとつ噛ませてURLによって異なるテンプレートを読み込むようにします。
<?php
$data = $_SERVER["REQUEST_URI"]; list($domain,$dir_01) = explode("/",$data);
if( $dir_01 == 'en' ): get_template_part('英語サイトのテンプレート');
else: get_template_part('日本語サイトのテンプレート');
endif;
?>
URLを取得、URLが「ドメイン/en/...」である場合とそうでない場合でifをかけます。
これでおkです。(゚∀゚)