2012-11-12 55 views
0

有人可以帮我找出为什么wordpress在我激活我的插件时不会创建“wp_locations”表。Wordpress数据库表没有创建

global $wp_locations_version; 
$wp_locations_version = "1.1"; 

define('LOCATIONURL', plugins_url().'/wp_locations'); 

function locations_install() { 
    global $wpdb; 
    global $wp_locations_version; 


    $sql = "CREATE TABLE IF NOT EXISTS wp_locations (
    ID BIGINT NOT NULL AUTO_INCREMENT, 
    location VARCHAR(100) NOT NULL, 
    address VARCHAR(255) NOT NULL, 
    lattitude INT, 
    longitude INT, 
    description MEDIUMTEXT NULL, 
    person VARCHAR(50) NOT NULL, 
    personimg VARCHAR(255) NOT NULL, 
    email VARCHAR(255) NULL, 
    phone INT, 
    sort INT 
    );"; 

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

    add_option("wp_locations_version", $wp_locations_version); 
} 
register_activation_hook(__FILE__ , 'locations_install'); 

回答

0

代码中没有与数据库的连接。新增功能像这样的:

 function MySQLConnect() { 
      $MySQLink = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) ;// These parameters are defined in 'wp-config.php' 
      if (!$MySQLink) : 
      return FALSE ; 
      else : 
      return $MySQLink ; 
      endif ; 
     } 

然后,在功能locations_install(),在开始添加以下代码行进行连接:

 $Link = MySQLConnect() ; 
     if (!$Link) return FALSE ; 
     ...       

希望这有助于。

UPDATE

站在纠正Sudar。

在Wordpress中这样做的方法应该是使用类wpdb,它不需要新的连接。在这种情况下,存在以下问题:

require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 

从wp-admin调用插件脚本。它应该是:

require_once('/includes/upgrade.php'); 

对不起。

+0

感谢您的帮助。我不确定这是否需要连接到数据库,因为它是一个wordpress插件,它应该已经可以访问它。 –

+0

是的,你必须建立一个新的连接。 –

+0

OP说它是WordPress。在WordPress中,您不必打开自己的连接。它将在全局$ wpdb变量中可用。 – Sudar