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