我正在尝试在我的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' );
?>
我不确定我错过了什么,任何帮助将不胜感激!
您的语法错误,并且不需要此"如果不存在",因为您的条件已经在检查它。
注意:我将其切换为所有单引号,以便更容易遵循并删除了 (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' );