2016-11-04 118 views
1

我想在插件激活時將表格插入WordPress數據庫。我已經使用這段代碼,但它不工作。這段代碼應該在插件被激活時創建一個表格,但是在我的WordPress中,當我激活插件時,代碼可以正常工作,但表格不會在數據庫中創建。在WordPress數據庫中插入表格

如何在插件激活時在WordPress數據庫中創建表格?

我使用下面的代碼爲我的插件

class createtabel { 
    function __construct() { 
     register_activation_hook(__FILE__, 'create_plugin_database_table'); 
    } 

    public static function create_plugin_database_table() { 
     global $wpdb; 
     $table_name = $wpdb->prefix . 'wp_productqa'; 
     $sql = "CREATE TABLE $table_name (
     QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
     Product_ID varchar(50) NOT NULL, 
     Username varchar(50)NOT NULL, 
     Useremail varchar(50) NOT NULL, 
     comment varchar(255) NOT NULL, 
     PRIMARY KEY (QA_id) 
     );"; 
     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     dbDelta($sql); 
    } 
} 
+0

如何可以調用這個類的功能一樣, –

+0

類ProductQA { 功能的CreateDatabase( ) { \t $ classdb = new createtabel(); \t register_activation_hook(__FILE__,array($ this)); } } $ productQAObject-> createdatabase(); –

+0

$ createTable = new createtabel; register_activation_hook(__FILE__,array($ createTable,create_plugin_database_table)); – barudo

回答

0

你必須確保register_activation_hook被調用。

例如,在你的插件定義文件,您可以:

$createTable = new createtabel; 
register_activation_hook(__FILE__, array($createTable, 'create_plugin_database_table')); 

順便說一句,在createtabel類,你可以創建表:

$wpdb->query($sql); 

那是你的意圖也有

$table_name = $wpdb->prefix . 'wp_productqa'; 

最有可能的情況下(假設前綴是wp_)將具有:

$table_name = 'wp_wp_productqa'; 
+0

我添加了這段代碼,但它不工作... –

+0

1.刪除createtabel中的__construct方法。 2.你的插件定義文件中有createtabel類,如果沒有,你必須使用include或require來加載它。 3.用新的createtabel創建一個createtabel類的實例。 4.如上定義的register_activation_hook 5.激活插件,如果它沒有被激活;或者如果它是你必須停用然後激活。 – barudo

+0

你好兄弟我可以按照你的一步,但它仍然不工作 –

0

請使用此代碼,同時激活您的插件它會在您的數據庫中創建新表。

register_activation_hook(__FILE__, 'install_covercarousel'); 

在您的文件編碼已經開始的全局範圍內定義這個鉤子。

也請不要」使用public static function只需添加function and functioname這樣function abs(){}

後更改代碼看起來象

register_activation_hook(__FILE__, 'create_plugin_database_table'); 
function create_plugin_database_table() { 
      global $wpdb; 
      $table_name = $wpdb->prefix . 'wp_productqa'; 
      $sql = "CREATE TABLE $table_name (
      QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
      Product_ID varchar(50) NOT NULL, 
      Username varchar(50)NOT NULL, 
      Useremail varchar(50) NOT NULL, 
      comment varchar(255) NOT NULL, 
      PRIMARY KEY (QA_id) 
      );"; 
      require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
      dbDelta($sql); 
     } 
+0

你好,我在我的插件使用此代碼,但它給錯誤,如:「解析錯誤:在d語法錯誤,意外‘register_activation_hook’(T_STRING),預計功能(T_FUNCTION) :\ XAMPP \ htdocs中\ testwordpress \可溼性粉劑內容\插件\ ProductQA \ classdb.php第3" 行 –

+0

是監守的你不得不從文件中刪除你的類名聲明,以便它會爲您提供了錯誤,所以請使用此代碼爲每你的插件結構。 –

+0

不,我不能刪除類名 –