質問: WordPressで、一つの記事の投稿で、2種類のデザインの記事詳細ページ(シングルページ)に同時に出力することは可能でしょうか? 下記のpost.htmlは同じ記事ですが、デザインはそれぞれ変えたいのです。 Aサイト:www.hoge.com/shopA/blog/post.html Bサイト:www.hoge.com/shopB/blog/post.html ブログの記事を2店舗それぞれのページに同時に表示させたいと考えています。 可能であれば、方法などについてご教示ください。 よろしくお願いします。
回答: まずは、ぼくのスペックの紹介から。 プログラム系の質問は、結構、回答していますが、PHP とか WordPress は、あまり得意ではありません。 なので、マニュアルを読んだり、検索をして回答することが多いです(短いプログラムだったら、たまに動かしてみたりしますが)。 人力検索には PHP や WordPress が得意な方もいらっしゃるので、探した経緯も含めて回答します(冗長ですみません)。 WordPress といっても、PHP で DB をアクセスして HTML を作るプログラムには変わりありませんから、別々に作ったアプリケーションが、同じ DB を読む、というのは当たり前にできるだろう、と思いました。 データベースに接続するための情報(ホスト、ポート、データベース名、ユーザID、パスワード)と、テーブル名が同じであれば良さそうだ、というところから検索してみました。 最初に見つけたのは、ここです。 #### ■WordPressで同じデータベース内の他のWordPressからデータを取得 | Just Another Life 同じデータベース内に複数の WordPress をインストールして、ある WordPress から、別の WordPress のテーブルを読み込む、ということのようです。 $wpdb という変数に入ってるクラス(クラス名も wpdb)で、データベースのアクセスをラップしているようです。 ちなみに、ひとつのデータベースに、複数の WordPress 用のテーブルを入れちゃう、というのは、そこそこやられているようです。 たとえば、ここ。 管理画面の範囲だけでも、いけるようです。 テーブルの接頭辞を別々にすることで、複数のテーブル群がひとつのデータベースに収まるようにするということらしい。 ということは、接頭辞を同じにしてしまえば、テーブルも共有できそうです。 #### ■Wordpressで複数サイトで記事共有 | 株式会社LIG init のフィルタを作成して、$wpdb を置き換えるという方法を取ってます。 ちょっとコードが化けてる ``` $wpdb->set_prefix('サイトAのプレフィックス'); ``` ではなくて、 ``` $wpdb->set_prefix('サイトAのプレフィックス'); ``` こうですよね、というのと、 > サイトBの管理画面に入れなくなったので、管理画面のURLとログインURLの時はwpdbを新規に作らないようにした。 > > Wordpressで複数サイトで記事共有 | 株式会社LIG このあたりのコードが書かれていないので、そのまま使うわけにはいかなそうです。 #### ■[WordPress] 同じDB(テーブルとそのレコード)を使って複数のWebサイトを構築する | 制作メモ | 560DESIGNS wp-config.php を丸っとコピーして、フィルターで URL のドメイン部分を変えてます。 こっちも、無理矢理な感じはあります :-) #### ■wp-config.php の編集 - WordPress Codex 日本語版 wp-config.php の範囲だけで、いけるんじゃないの、と思って、リファレンスを読んでみました。 * テーブルを共有する * ドメインは同じで、URL 中のディレクトリを変える ということなので、 * データベースの設定 を同じにする * $table_prefix : データベース・テーブル名の接頭辞 を同じにする * WordPress アドレス (URL) を別々に設定する という辺りを変更すると、希望していることができるのではないかと思います。 アップロードしたファイルの扱いは、ちょっと考えてあげる必要があると思います。。 テーマやプラグインは別々に設定するということですから、wp-content ディレクトリは、違うものを設定することになると思うのですが、この配下にアップロードファイルも配置されるようです。 * アップロードディレクトリ * FTP のディレクトリ のふたつは、同じところを指すようにしておいた方が良いのかな、という気がします。 というわけで、以下のような手順で構築することになるんじゃないかと思います(多分)。 1. ひとつめの WordPress をインストールして、テーマやらなんやらをいじって、動作確認 2. ふたつめの WordPress をインストールする 3. ふたつめの wp-config.php で、DB_NAME、DB_USER、DB_PASSWORD、DB_HOST をひとつめの値と同じにする ※ $table_prefix は、ひとつめのと変えておく 4. ふたつめの WordPress で、テーマやらなんやらをいじって、動作確認 ※ ここまでで、ひとつのデータベースに、ふたつの WordPress をインストールして、動作確認をしたことになります 5. ふたつめの wp-config.php で、$table_prefix を、ひとつめのものと同じ値にする これで、ひとつめのデータを、ふたつめの WordPress で参照できていると思います。 後は、ふたつめの WordPress から記事を投稿して、ひとつめの WordPress で投稿記事が参照できることなどを確認して、お疲れさん、という感じじゃないでしょうか。 # アップロードファイルの扱いについては、省略してます ちょっと気になるのは、ふたつめの WordPress の管理画面が使い物にならないのではないか、ということです。 勘がささやいているだけで、何の根拠もないのですが (^^; # 同じ記事が複数のページで表示されていて、SEO 的にどうなん? とかいう話は想定内だと思いますので、特に言及しません