在wordpress中激活插件时,数据库表不会创建

时间:2014-01-08 12:34:51

标签: mysql wordpress-plugin wordpress

我正在尝试在我的wordpress插件主文件中创建一个数据库表。这是我创建数据库表的代码。当我从Wordpress控制面板激活插件时,插件激活但数据库表不会创建。

     <?php   
     function keywords_ranker_install() {
 global $wpdb;
 global $keyword_rankerdb;
 $keyword_rankerdb = "1.0";
 $table_name = $wpdb->prefix . "search_engine";

        if($wpdb->get_var("SHOW TABLES LIKE '$table_name'")!= $table_name) {

        $sql = "CREATE TABLE IF NOT EXISTS ".$table_name." (
        id int(11) NOT NULL AUTO_INCREMENT,
        engine text NOT NULL,
        PRIMARY KEY ('id'));";

    //reference to upgrade.php file
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta($sql);
    //$wpdb->query($sql);

    //update_option('keyword_ranker_version',$keyword_rankerdb);
    }
  //action hook for plugin activation 

   }//end of plugin installation
      register_activation_hook(__FILE__,'keywords_ranker_install' );

&GT;

我不确定我缺少什么,任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:1)

您的语法错误,因为您的条件已经在检查,所以不需要此IF NOT EXISTS。

注意:我将其切换为所有单引号,以便更容易理解并删除(id)中的单引号;

function keywords_ranker_install() {
global $wpdb;
global $keyword_rankerdb;
$keyword_rankerdb = "1.0";
$table_name       = $wpdb->prefix . "search_engine";

if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) != $table_name ) {

    $sql = 'CREATE TABLE ' . $table_name . ' (
    id int(11) NOT NULL AUTO_INCREMENT,
    engine text NOT NULL,
    PRIMARY KEY (id))';

    //reference to upgrade.php file
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );

    //update_option('keyword_ranker_version',$keyword_rankerdb);
}
//action hook for plugin activation

}

//end of plugin installation
register_activation_hook( __FILE__, 'keywords_ranker_install' );