kjmtshさん、ご回答いただき有難うございます。
2つのWordPressが動いている環境で、かつDBは共通で使用しています。
プレフィックスを変えて、それぞれで動かしているのですが、互いの記事を
検索し表示し合えたらと考えておりまして。
実行前に、str_replaceとかでプレフィックを書き換えられないかと思いまして。
不可能でしょうか?
「WordPressが自動的に発行しているSQL文」というのは、メインクエリのことだと思いますが、基本的に WordPress の SQL 文は、wp-includes/query.php が一手に引き受けていて、これにはプレフィクスを変更する API が用意されていません。
もし、やるとするなら、実際にデータベースへの要求を担当する $wpdb クラス(wp-includes/wp-db.php)が初期化されるタイミングでだと思いますが、これは、wp-includes/load.php の中で行われています。ここで初期化された $wpdb クラスを利用して、WP_Query クラスが SQL をデータベースに発行します。
見た感じでは、メインクエリのテーブルプレフィクスを変更できる方法は、1つだけあります。実は、load.php で、wp-db.php を読み込むときに、wp-content/db.php があれば、それを読み込むようになっているのです。このファイルを作って、
class myWPDB extends wpdb {
....
}
if (!isset($wpdb)) {
global $wpdb;
$wpdb = new myWPDB( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
}
と、別クラスを作れば、SQL 文はかならず $wpdb->query() 関数を通過しますので、ここで待ち構えて、str_replace() すれば動的に変更できると思います。$wpdb の参照の変更だけではだめで、後でコアに書き換えられてしまいます。$wpdb->query() に飛んできた SQL 文を地道に replace する以外にはないと思います。ただし、条件を厳密に指定しないと、全ての SQL 文が書き変わってしまうので、取扱いには十分注意してください。