首先,如果我的问题不够明确,我想道歉 - 我是wordpress的新手,所以我可能会对名词有一些问题。
其次,这是我的问题的描述: 我有一个在DB中创建表的插件。 我想要完成的是创建一个多站点解决方案,其中所有站点上都安装了相同的插件,但每个站点都看到了不同的DB实例。
这将允许我拥有某种多租户解决方案,而无需重新编写插件。
这可能吗?
我将非常感谢你的帮助。
Nadav
修改
这是我在插件的基本实体中的代码:
public static function getTableName()
{
global $wpdb;
return $wpdb->base_prefix . static::$table;
}
我应该将其更改为以下内容以支持每个站点的表吗?
public static function getTableName()
{
global $wpdb;
return $wpdb->prefix . static::$table;
}
答案 0 :(得分:1)
如果您在创建表时使用$wpdb->prefix
,那么每个站点都已有单独的表。
global $wpdb;
$my_table = $wpdb->prefix . 'my_table';
$query = "CREATE TABLE $my_table...";
上面的代码会为每个网站生成一个单独的表,其名称如wp_2_my_table
,wp_3_my_table
等(假设您使用的是默认基本前缀wp_
)。
大多数插件不必更新以明确支持多站点,只要它们遵循最佳实践。
相反,如果您想为网络中的所有网站创建一个表格,请使用$wpdb->base_prefix
。
确保在创建或访问表时始终使用正确的前缀。
https://codex.wordpress.org/Class_Reference/wpdb#Class_Variables
编辑:
我应该将其更改为以下内容以支持每个站点的表吗?
如果您希望每个网站都有单独的表格,那么您需要将其更改为使用$wpdb->prefix
而不是$wpdb->base_prefix
。请注意,如果您要在激活挂钩中创建表格,则必须重新安装插件才能创建新表格。