插件未在激活

时间:2016-08-01 17:50:34

标签: mysql wordpress plugins

我为我的插件创建了第一个表,在添加了更多功能后,我意识到我需要为其他类型的数据添加第二个表。

到目前为止,

故障排除工作解决了dbDelta()不使用相同的sql数据变量名的问题,将dbDelta()作为组合的sql var($setup_sql .= '...'而不是$setup_sql = '...')运行,并将代码作为一个简单的函数而不是一个类运行。

我甚至尝试使用不同的名称运行单个表创建,只是为了检查代码是否正常工作,而仍然没有创建另一个表。

我已经没有错误运行所有这些测试,并且出于所有意图和目的,Wordpress似乎不允许插件创建多个表 - 但我知道这不是情况下。

    class activation_setup {
    public static function wpd_activate() {
        global $wpdb;
        $charset_collate = $wpdb->get_charset_collate();
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

        $wpd_table_trig = $wpdb->prefix . 'wpd_triggers';
        $setup_sql_trig = "CREATE TABLE $wpd_table_trig (
          id int(11 ) NOT NULL AUTO_INCREMENT,
          trigger varchar(255) DEFAULT NULL,
          popup varchar(255) DEFAULT NULL,
          notify varchar(255) DEFAULT NULL,
          UNIQUE KEY id (id)
        ) $charset_collate;";
        dbDelta( $setup_sql_trig );

        $wpd_table_sel = $wpdb->prefix . 'wpd_selections';
        $setup_sql_sel = "CREATE TABLE $wpd_table_sel (
          id int(11 ) NOT NULL AUTO_INCREMENT,
          selected varchar(255) DEFAULT NULL,
          session varchar(255) DEFAULT NULL,
          ip varchar(255) DEFAULT NULL,
          page varchar(255) DEFAULT NULL,
          date varchar(255) DEFAULT NULL,
          UNIQUE KEY id (id)
        ) $charset_collate;";
        dbDelta( $setup_sql_sel );

        update_option('wpd_activated',true);
    }
}
$activation_setup = new activation_setup();
register_activation_hook( __FILE__ , array( $activation_setup, 'wpd_activate' ) );

我绝对不会试图解决为什么这段代码不会添加第二个表,即使在删除重复的表代码并使用不同的表名运行它之后。

我已经通过大量的博客文章和Stack答案试图找到它的底部。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

问题与表定义有关。 您已在表定义中编写trigger,它也是mysql的关键字 那就是问题 这个改变可以解决你的问题 使用"`"在写字段名称时。

 class activation_setup {
    public static function wpd_activate() {
        global $wpdb;
        $charset_collate = $wpdb->get_charset_collate();
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

        $wpd_table_trig = $wpdb->prefix . 'wpd_triggers';
        $setup_sql_trig = "CREATE TABLE $wpd_table_trig (
          `id` int(11 ) NOT NULL AUTO_INCREMENT,
          `trigger` varchar(255) DEFAULT NULL,
          `popup` varchar(255) DEFAULT NULL,
          `notify` varchar(255) DEFAULT NULL,
          UNIQUE KEY id (id)
        ) $charset_collate;";
        dbDelta( $setup_sql_trig );

        $wpd_table_sel = $wpdb->prefix . 'wpd_selections';
        $setup_sql_sel = "CREATE TABLE $wpd_table_sel (
          `id` int(11 ) NOT NULL AUTO_INCREMENT,
          `selected` varchar(255) DEFAULT NULL,
          `session` varchar(255) DEFAULT NULL,
          `ip` varchar(255) DEFAULT NULL,
          `page` varchar(255) DEFAULT NULL,
          `date` varchar(255) DEFAULT NULL,
          UNIQUE KEY id (id)
        ) $charset_collate;";
        dbDelta( $setup_sql_sel );


    }
}
$activation_setup = new activation_setup();
register_activation_hook( __FILE__ , array( $activation_setup, 'wpd_activate' ) );  

如果您想确保问题与该触发器相关,请删除"`"从触发器字段然后再次激活插件。