致命错误 - 但它有效 - 不会激活

时间:2016-05-03 20:48:00

标签: mysql wordpress plugins fatal-error

正在为Wordpress构建自定义插件,但有效却无效。

当我使用以下代码激活插件时:

  1. 创建表格
  2. 并插入数据(虽然3次?)。
  3. 然后得到“插件无法激活,因为它触发了致命错误。”

    • 不会创建调试日志
    • 控制台中没有错误。
    • 表格有效并提交

    这是创建表函数:

        function db1_install() {
            global $wpdb;
            global $db_version1;
            global $table_name;
            $table_name = $wpdb->prefix . 'myCategories';   
            $charset_collate = $wpdb->get_charset_collate();    
            $sql = "CREATE TABLE $table_name (
                id mediumint(9) NOT NULL,
                item varchar(20) NOT NULL,
                item_cat varchar(20) NOT NULL
                ) $charset_collate;";
            require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
            dbDelta( $sql );
            add_option( 'db_version1', $db_version1 );    
        } 
        register_activation_hook( __FILE__, 'db1_install' );
    

    这是数据插入功能:

    `enter code here`function add_categories(){
    
        global $wpdb;
        $table_name = $wpdb->prefix . 'myCategories';
        $wpdb->query("INSERT INTO $table_name (id,item,item_cat)
        values (1,'item1','cat1'), (2,'item2','cat1'), (2,'item3','cat4')");
        die();
        return true;
        }
        register_activation_hook( __FILE__, 'add_categories');
    

1 个答案:

答案 0 :(得分:0)

我在代码中看到的两个潜在问题是,

  1. die();功能中的add_categories()可能会弄乱WordPress'能够辨别插件是否成功激活。
  2. 您对global $table_name;的使用。您不应该将表放在全局命名空间中,因为它可能与其他插件冲突。