需要在WordPress上创建自定义表的帮助

时间:2015-11-11 作者:AndyWanna_KnowItAll

我正在尝试学习如何在wpdb上为我要构建的插件创建和使用自定义表。到目前为止,我已经看过很多教程,知道如何创建表,但我面临着存储数据和调试表的问题。

因此,对于我的插件,我创建了一个主类,在其中调用这些函数

public function pre_install(){
    global $wpdb;
    global $pre_db_version;
    $pre_db_version=\'1.1\';

    $table_name = $wpdb->prefix . \'prelauncher\';

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
    id mediumint(9) NOT NULL AUTO_INCREMENT,
    username tinytext NOT NULL,
    email varchar(255) NOT NULL,
    UNIQUE KEY id (id)
    ) $charset_collate;";

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

add_option( \'pre_db_version\', $pre_db_version );

}  
然后在课外我打电话

register_activation_hook( __FILE__, array(\'main_class\',\'pre_install\'));
这应该创建一个名为wp\\u prelauncher的数据库表,其中包含两列,username和email,但它也会创建两个额外的列,分别为my\\u title和show\\u title。我不知道这两个专栏是从哪里来的。我搜索了整个代码,但什么也没找到。

Also if anyone could point me in the direction where I could learn how to save user input in this table it will be a big help.

1 个回复
最合适的回答,由SO网友:Kvvaradha 整理而成

我想,您可以使用以下函数

public function pre_install()   {
global $wpdb;
require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
$sql="
   CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."prelauncher`
   (
      id mediumint(9) NOT NULL auto_increment,
      username tinytext NOT NULL,
      email varchar(255) NOT NULL,
      PRIMARY KEY  (`main_id`)
 );";
dbDelta($sql);
}
而不是你的激活挂钩。

register_activation_hook( __FILE__, array(\'main_class\',\'pre_install\'));
我认为创建此表不需要$pre\\u db\\u版本。

我希望这能解决你的问题。