您应该仅在激活时创建表,如果未创建表,则该表存在于数据库中。一个小的源代码示例应该对您有所帮助。
follow源代码也在单个站点中创建一个表,该插件可能会为网络中的每一方以单一模式激活。
register_activation_hook( __FILE__, \'on_activate\' );
function on_activate() {
create_table();
}
function create_table() {
global $wpdb;
$table_name = $wpdb->prefix . \'your_table_name\';
// Check, if exists
if ( $wpdb->get_var( "show tables like \'{$table_name}\'" ) == $table_name ) {
return NULL;
}
$sql = "CREATE TABLE " . $table_name . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
col VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);";
// // make dbDelta() available
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql );
}
如果你的插件只用于网络激活,那么在插件的头条博客上添加评论
Network: TRUE
. WP对此进行检查,只允许在网络范围内激活。还可以在源代码中添加对多站点的检查,如
if (function_exists(\'is_multisite\') && is_multisite())
.
但现在最重要的部分是全球$wpdb
. 在globals命名空间中创建表,而不是用于特定站点$wpdb->base_prefix
, 不$wpdb->prefix
.