如何在MULTSITE中创建博客专用数据库表?

时间:2014-01-17 作者:Neta Meta

我正在创建一个插件,昨天应该可以在WP multisite上运行。我已经在我的服务器上安装了WP multisite。测试时我发现register_activation_hook 只在主博客上创建了1个表,而我还有2个博客。

下面是我现在创建表的方式:

global $wpdb;
require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
$table_name = $wpdb->prefix . "pm_services";
$table = "CREATE TABLE $table_name (
  ID bigint(20) NOT NULL AUTO_INCREMENT,
  service_id bigint(20) NOT NULL,
  name varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  UNIQUE KEY cuunique (`ID`)
  );";
dbDelta($table);
有没有办法在激活后为网络上的每个博客创建此表?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

基本流程-激活时,检查is_multisite, 使用获取所有网站wp_get_sites, 使用循环查看结果foreachswitch_to_blog 并创建表。

您还需要钩住wpmu_new_blog 操作,检查是否is_plugin_active_for_network, 切换到该博客ID并运行您的激活代码,以便在激活后添加的站点创建其表。运行激活后,不要忘记切换回原始博客ID。

结束

相关推荐

Extending the database

我正在尝试向comments数据库中添加一个额外的列,该列将存储帖子/页面作者的用户ID。这是插件的一部分,该插件将显示新评论以回复帖子或其他评论。据我所知,Wordpress没有内置此功能,而是将评论放在一个大组中。我希望用户只快速看到与自己相关的评论。require_once(ABSPATH . \'wp-admin/includes/upgrade.php\'); global $wpdb; $wpdb->show_errors(); $query = \