[英]Can't create table if including the file in main script
我想通过在主插件文件中包含创建表的脚本来创建表。
我有这个:
register_activation_hook( __FILE__, 'vkrwps_agt' );
function vkrwps_agt() {
global $wpdb;
global $jal_db_version;
$table_name = $wpdb->prefix . "attribute_groups";
$sql = "CREATE TABLE $table_name (
id int(11) NOT NULL AUTO_INCREMENT,
attribute_name VARCHAR NOT NULL,
attribute_group VARCHAR NOT NULL,
PRIMARY KEY id (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
} // end vkrwps_agt()
如果我在主插件文件中有此功能,它就可以工作(它会创建表),但是我将该代码放在了插件根目录中inc
文件夹内的另一个名为tables.php
脚本中,因为我想将其包含在主插件中文件。
我尝试了以下操作,但不起作用:
require 'inc/tables.php';
我没有收到错误(例如,找不到文件),但是未创建表。
这是因为在register_activation_hook( __FILE__, 'vkrwps_agt' );
您指向当前文件(即插件的主文件,请注意__FILE__
)。
函数register_activation_hook()
期望wp-content / plugins目录中主插件文件的路径 。 一条完整的路径也将起作用。
例如,当插件位于wp-content/plugin/sampleplugin/sample.php
,该钩子的名称将变为activate_sampleplugin/sample.php
。
当插件仅包含一个文件并且(默认情况下)位于wp-content/plugin/sample.php
,此挂钩的名称将为activate_sample.php
。
此功能是为一个包装activate_PLUGINNAME
动作,并且更容易使用。
在此处阅读文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.