繁体   English   中英

如果在主脚本中包含文件,则无法创建表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM