ある WP サイトを新しいサイトに移行する作業を行っています。どちらも多くのカスタム フィールド、タクソノミー、投稿タイプを備えた高度な機能を備えているため、組み込みのプラグインをインポート/エクスポートに使用することはできません。
$wpdb->select('old_db_name')
代わりに、同じサーバー上に両方のデータベースをセットアップし、 と を使用して簡単に切り替えることができます$wpdb->select(DB_NAME)
。このための小さなプラグインを作成して、WP内から実行できるようにし、投稿のフェッチと挿入などにすべてのWPメソッドを使用できるようにしました.
1 つのことを除いて、すべて正常に動作します。タクソノミー。分類法に関連する私が試したすべての機能は、DB_NAME
データベース(つまり、WPインストールが実行されているもの)を照会します。
簡単な例を次に示します。
<?php
global $wpdb;
# Use default DB
$wpdb->select(DB_NAME);
# Prints "2" (I've only added two posts to the new installation)
echo count(get_posts(array('numberposts' => -1)));
# Prints all the taxonomies
var_dump(get_taxonomies());
# Switch to old DB
$wpdb->select('old_db_name');
# Prints > "300" (there are roughly 300 posts in the old DB - the number is correct and NOT the same as before)
echo count(get_posts(array('numberposts' => -1)));
# Prints EXACTLY the same thing as the previous call, even though the old DB has different custom taxonomies
var_dump(get_taxonomies());
wp_get_post_terms()
どちらも機能しませんが、代わりに新しい DB にクエリを実行します (新しい DB に存在しなくなった古い分類法から用語を取得しようとすると、WP は分類法が存在しないというエラーをスローします)。
これはバグですか?それを解決する方法はありますか?WP で複数の DB を使用することに関する情報はあまりないため、オンラインで何かを見つけることができませんでした。