Posted at

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

More than 3 years have passed since last update.

動機:動的に別の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' ";

参考


https://javelinadevil.wordpress.com/2014/03/06/wordpressで同じデータベース内の他のwordpressからデータ取得/