0

我正在将一个 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 中使用多个数据库的信息不多,因此无法在线找到任何内容。

4

1 回答 1

0

好的,经过数小时的调查,似乎 WP 在初始化时缓存了所有可用的分类法,因此在切换数据库时它不会重新检查可用的分类法。但是,它确实从正确的数据库中选择数据,所以这不是问题。

我想出的解决方案只是(暂时)将缺少的分类法添加到新数据库中,迁移后我将删除它们。

于 2013-07-09T06:18:35.897 回答