我正在尝试学习如何在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.
最合适的回答,由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版本。
我希望这能解决你的问题。