多站点wordpress程序是否为每个站点运行插件实例?

时间:2015-06-14 17:41:21

标签: wordpress

首先,如果我的问题不够明确,我想道歉 - 我是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;
}

1 个答案:

答案 0 :(得分:1)

如果您在创建表时使用$wpdb->prefix,那么每个站点都已有单独的表。

global $wpdb;
$my_table = $wpdb->prefix . 'my_table';
$query = "CREATE TABLE $my_table...";

上面的代码会为每个网站生成一个单独的表,其名称如wp_2_my_tablewp_3_my_table等(假设您使用的是默认基本前缀wp_)。

大多数插件不必更新以明确支持多站点,只要它们遵循最佳实践。

相反,如果您想为网络中的所有网站创建一个表格,请使用$wpdb->base_prefix

确保在创建或访问表时始终使用正确的前缀。

https://codex.wordpress.org/Class_Reference/wpdb#Class_Variables

编辑:

  

我应该将其更改为以下内容以支持每个站点的表吗?

如果您希望每个网站都有单独的表格,那么您需要将其更改为使用$wpdb->prefix而不是$wpdb->base_prefix。请注意,如果您要在激活挂钩中创建表格,则必须重新安装插件才能创建新表格。