search
LoginSignup
10
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

WordPressにて、別にインストールしたWordPressのDBを参照するケース

動機:動的に別のWordPressサイトの記事を表示したい

微妙にややこしい話です。

複数のWordPressで作成したサイトに関して、最新情報をまとめて表示するページが必要になりました。

それぞれのサイトのデータは、
別々のデータベースに保存されています。

さて、どうやって取得するか?

wpdbが使えるので、別の名前で有効な接続を生成

新しい接続を作って、そこで使われているプレフィックス("wp_"とかの接頭語)を指定すれば良いです。

参考元ではグローバル変数で実施してますが
グローバル宣言しなくとも動作しました。
記載されている関数の中で、一時的に有効になればよかったので・・・。

新しい接続の作り方


注:変数の値は
$another_db_name = 新しく接続するデータベース名
$another_db_user = 同、ユーザ名
$another_db_pass = 同ユーザのパスワード$another_db_name = 接続するDBのホスト
$another_tb_prefix = 新しいく接続する対象のプレフィックス( "wp_" など )

以下、設定〜簡単な処理のサンプルコード


/*DB設定を行います。*/
$another_db_name = 'dbname';
$another_db_user = 'dbuser';
$another_db_pass = 'dbpass';
$another_db_host = 'another_host';
$another_tb_prefix = 'wp_hoge_';

$anoteher_wpdb = new wpdb($another_db_user, $another_db_pass, $another_db_name, $another_db_host);

//プレフィックスの設定(忘れがち)
$anoteher_wpdb->set_prefix($another_tb_prefix);

/*
例えば、別のWordPressで利用しているDBのカテゴリ設定から、特定のスラッグとそのスラッグのIDを取得する場合
*/

$sql ="SELECT term_id, slug FROM $anoteher_wpdb->terms WHERE slug = 'pr' or slug='foo' ";

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
10
Help us understand the problem. What are the problem?