ど素人から毛を生やす。<延>

1つの投稿から2つのURLとテンプレートで出力する

Web > WordPress 2014年9月8日(最終更新:10年以上前)

2014年9月8日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
携帯機でぷよぷよをやりたいと思いぷよぷよテトリスを買ったら、テトリスが難しすぎて
詰みゲーになりかけてる餅。です。

シナリオモードがテトリスの度に数時間ストップします(´・ω・`)

それはともかくWordPress。

今回の案件は、
「商品一覧(カスタム投稿)を英語サイトにも表示されるようにしたい」です。

英語サイト用テンプレートに出力しなければならないので、テンプレートの頭で
クエリストリングを読み込むようにして…と思ったのですが、

ドメイン/en/product/ が理想だが、クエリストリングだけだと ドメイン/product/○○?en

これは……、ちょっとなぁ。
美しくないよなぁ……(´・ω・`)

というわけで、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です。(゚∀゚)

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (1)
  • (`・ω・´) 役に立った (1)