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

时间:2014-03-18 09:12:53

标签: php database wordpress plugins

我想通过在主插件文件中包含创建它的脚本来创建表。

我有这个:

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()

如果我在我的主插件文件中有它,它可以工作(它创建表),但是我将该代码放在我的插件根目录中tables.php文件夹中名为inc的另一个脚本中,因为我想将它包含在主插件文件中。

我尝试了以下但不起作用:

require 'inc/tables.php';

我没有收到任何错误(例如找不到文件)但是没有创建表格。

1 个答案:

答案 0 :(得分:0)

这是因为在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操作的包装器,更易于使用。

阅读文档here