###前提
Wordpress のマルチサイトを使ってサイトを運営しています。
適用するテーマやプラグインが異なるものの、
WordPress 本体は共用で1つです。
- 親サイト : example.com
- 子サイト : news.example.com
親サイトに press という投稿カテゴリがあり、
下記のような URL で記事の表示が可能です。
- (親サイト) プレス記事一覧 : example.com/press/
- (親サイト) プレス記事詳細 : example.com/press/224/
###実現したいこと
親サイトで投稿した特定のカテゴリの記事を
子サイトでも表示したいと考えています。
子サイトで表示したい親サイトでのカテゴリ名を press とします。
子サイトでも当該カテゴリの一覧、詳細ページを実装しようとしています。
- (子サイト) プレス記事一覧 : news.example.com/press/
- (子サイト) プレス記事詳細 : news.example.com/press/224/
###発生している問題・エラーメッセージ
調べたところ、親サイトの記事一覧を子サイトで表示する方法はすぐに見つかりました。
ところが親サイトの記事詳細を子サイトで表示する方法は見つかりませんでした。
テンプレート内でswitch_to_blog() や、restore_current_blog() を使うことは
理解していますが、記事詳細の ID をどのようにして、
プレス記事詳細に渡せばいいかが分かりません。
###該当のソースコード
固定ページ「プレス記事一覧」(スラッグ:/press/) を作成し、
テンプレートを「プレス記事一覧テンプレート」に設定します。
PHP
1<?php 2/** 3 * Template Name: プレス記事一覧テンプレート 4 */ ?> 5 6<!-- …… (header 略) …… --> 7 8<?php switch_to_blog(1); $press = get_posts(array('category_name' => 'press')); ?> 9<?php if (count($press)) : foreach ($press as $article) : ?> 10<div class="press_wrap"> 11 <a href="<?php printf('/press/%d/', $article->ID); ?>"> 12 <dl class="clearfix row"> 13 <dt class="col-xs-2"> 14 <?php echo date('Y/m/d', strtotime($article->post_date)); ?> 15 </dt> 16 <dd class="col-xs-10"><?php echo $article->post_title; ?></dd> 17 </dl> 18 </a> 19</div> 20<?php endforeach; endif; restore_current_blog(); ?> 21 22<!-- …… (footer 略) …… --> 23
###試したこと
「プレス記事一覧」の子ページとして「プレス記事詳細」(スラッグ : /press/single-press/) を作成し、
single.php を複製したテンプレート「プレス記事詳細テンプレート」を用意して、この記事に設定しました。
PHP
1// function.php 2add_rewrite_rule('^press/(\d+)/?', 'press/single-press/');
add_rewrite_rule で single-media.php に ID を渡したい。
###補足情報(言語/FW/ツール等のバージョンなど)
マジックナンバーの観点から、
press/single-media の記事 ID を直接指定して
リダイレクトルールを作るのは、
出来れば避けておきたいところです。
分かりにくいところございましたら
補足させて頂きます。
どうか何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー