我正在将一个 WP 站点迁移到一个新站点。两者都相当先进,有许多自定义字段、分类法和帖子类型,所以我不能使用内置插件进行导入/导出。
相反,我在同一台服务器上设置了两个数据库,并且可以使用$wpdb->select('old_db_name')
和轻松地在它们之间切换$wpdb->select(DB_NAME)
。我为此创建了一个小插件,以便它从 WP 内部运行,从而允许我使用所有 WP 方法来获取和插入帖子等。
除了一件事,一切都很好;分类法。我尝试过的所有与分类相关的功能都将查询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()
也不起作用,而是查询新数据库(如果我尝试从新数据库中不再存在的旧分类法中获取术语 WP 会抛出一个错误,指出分类法不存在)。
这是一个错误吗?有什么办法解决吗?关于在 WP 中使用多个数据库的信息不多,因此无法在线找到任何内容。