WordPressで、一つの記事の投稿で、2種類のデザインの記事詳細ページ(シングルページ)に同時に出力することは可能でしょうか?


下記のpost.htmlは同じ記事ですが、デザインはそれぞれ変えたいのです。

Aサイト:www.hoge.com/shopA/blog/post.html
Bサイト:www.hoge.com/shopB/blog/post.html

ブログの記事を2店舗それぞれのページに同時に表示させたいと考えています。
可能であれば、方法などについてご教示ください。
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2014/12/18 18:30:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

まずは、ぼくのスペックの紹介から。
プログラム系の質問は、結構、回答していますが、PHP とか WordPress は、あまり得意ではありません。
なので、マニュアルを読んだり、検索をして回答することが多いです(短いプログラムだったら、たまに動かしてみたりしますが)。
人力検索には PHP や WordPress が得意な方もいらっしゃるので、探した経緯も含めて回答します(冗長ですみません)。

WordPress といっても、PHP で DB をアクセスして HTML を作るプログラムには変わりありませんから、別々に作ったアプリケーションが、同じ DB を読む、というのは当たり前にできるだろう、と思いました。
データベースに接続するための情報(ホスト、ポート、データベース名、ユーザID、パスワード)と、テーブル名が同じであれば良さそうだ、というところから検索してみました。



最初に見つけたのは、ここです。

WordPressで同じデータベース内の他のWordPressからデータを取得 | Just Another Life

同じデータベース内に複数の WordPress をインストールして、ある WordPress から、別の WordPress のテーブルを読み込む、ということのようです。
$wpdb という変数に入ってるクラス(クラス名も wpdb)で、データベースのアクセスをラップしているようです。

ちなみに、ひとつのデータベースに、複数の WordPress 用のテーブルを入れちゃう、というのは、そこそこやられているようです。
たとえば、ここ。
http://www.seotemplate.biz/blog/wordpress-tips/1048/

管理画面の範囲だけでも、いけるようです。
テーブルの接頭辞を別々にすることで、複数のテーブル群がひとつのデータベースに収まるようにするということらしい。
ということは、接頭辞を同じにしてしまえば、テーブルも共有できそうです。

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 中のディレクトリを変える

ということなので、

という辺りを変更すると、希望していることができるのではないかと思います。

アップロードしたファイルの扱いは、ちょっと考えてあげる必要があると思います。。
テーマやプラグインは別々に設定するということですから、wp-content ディレクトリは、違うものを設定することになると思うのですが、この配下にアップロードファイルも配置されるようです。

のふたつは、同じところを指すようにしておいた方が良いのかな、という気がします。



というわけで、以下のような手順で構築することになるんじゃないかと思います(多分)。

  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 的にどうなん? とかいう話は想定内だと思いますので、特に言及しません

id:lugry

お返事が遅くなりましたが、考え方、プロセスの事例までお示しいただき、ありがとうございます。
wp-config.phpでDB_NAME、DB_USER、DB_PASSWORD、DB_HOSTまででは同じにしまして動作確認まではいきましたが、$table_prefixを同じにした時点で公開ページ、管理画面にアクセスできなくなってしまいました。
もう少しで実現できそうな気もするので、他に思い当たることなどアドバイスいただければ、ありがたいです。

2015/01/08 17:43:24

その他の回答1件)

id:blue_star22 No.1

回答回数297ベストアンサー獲得回数12

ポイント100pt

wordpressにはそういう機能やプラグインはありませんが、このソースでできます。

PHPとpearでXML-RPCを利用してWordPressへ投稿
http://www.labs816.com/projects/note/wiki/PHP%E3%81%A8pear%E3%81%A7XML-RPC%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6WordPress%E3%81%B8%E6%8A%95%E7%A8%BF

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント100pt

まずは、ぼくのスペックの紹介から。
プログラム系の質問は、結構、回答していますが、PHP とか WordPress は、あまり得意ではありません。
なので、マニュアルを読んだり、検索をして回答することが多いです(短いプログラムだったら、たまに動かしてみたりしますが)。
人力検索には PHP や WordPress が得意な方もいらっしゃるので、探した経緯も含めて回答します(冗長ですみません)。

WordPress といっても、PHP で DB をアクセスして HTML を作るプログラムには変わりありませんから、別々に作ったアプリケーションが、同じ DB を読む、というのは当たり前にできるだろう、と思いました。
データベースに接続するための情報(ホスト、ポート、データベース名、ユーザID、パスワード)と、テーブル名が同じであれば良さそうだ、というところから検索してみました。



最初に見つけたのは、ここです。

WordPressで同じデータベース内の他のWordPressからデータを取得 | Just Another Life

同じデータベース内に複数の WordPress をインストールして、ある WordPress から、別の WordPress のテーブルを読み込む、ということのようです。
$wpdb という変数に入ってるクラス(クラス名も wpdb)で、データベースのアクセスをラップしているようです。

ちなみに、ひとつのデータベースに、複数の WordPress 用のテーブルを入れちゃう、というのは、そこそこやられているようです。
たとえば、ここ。
http://www.seotemplate.biz/blog/wordpress-tips/1048/

管理画面の範囲だけでも、いけるようです。
テーブルの接頭辞を別々にすることで、複数のテーブル群がひとつのデータベースに収まるようにするということらしい。
ということは、接頭辞を同じにしてしまえば、テーブルも共有できそうです。

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 中のディレクトリを変える

ということなので、

という辺りを変更すると、希望していることができるのではないかと思います。

アップロードしたファイルの扱いは、ちょっと考えてあげる必要があると思います。。
テーマやプラグインは別々に設定するということですから、wp-content ディレクトリは、違うものを設定することになると思うのですが、この配下にアップロードファイルも配置されるようです。

のふたつは、同じところを指すようにしておいた方が良いのかな、という気がします。



というわけで、以下のような手順で構築することになるんじゃないかと思います(多分)。

  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 的にどうなん? とかいう話は想定内だと思いますので、特に言及しません

id:lugry

お返事が遅くなりましたが、考え方、プロセスの事例までお示しいただき、ありがとうございます。
wp-config.phpでDB_NAME、DB_USER、DB_PASSWORD、DB_HOSTまででは同じにしまして動作確認まではいきましたが、$table_prefixを同じにした時点で公開ページ、管理画面にアクセスできなくなってしまいました。
もう少しで実現できそうな気もするので、他に思い当たることなどアドバイスいただければ、ありがたいです。

2015/01/08 17:43:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません