根据你的情况,我不建议或原谅你这样做,但你的问题的答案是看看$wpdb
类和dbDelta()
作用这是WordPress为添加自定义表提供的界面。
但要小心,权力越大,责任越大。使用$wpdb
绕过许多内置WordPress安全功能,因此您需要very 谨慎清理和转义数据,以避免引入SQL注入漏洞和其他安全漏洞。
这就是说,这里有一个抽象类,我最近用于为客户机执行此操作,它可能对您的工作有用。我没有测试这个,它是从一个更大的类中抽象出来的,所以您需要自己重新配置和测试它。无论如何,我认为您不需要为这个用例定制表。
<?php
/**
* Database
*
* Add custom tables to a WordPress database
*/
if ( ! class_exists(\'DB_Table\') ) :
class DB_Table
{
protected $table;
/**
* Create Database Table
*
* Given a schema array, create a custom table in the WP database
*/
public static function create() {
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
global $wpdb, $charset_collate;
$table = \'custom_table_name\'; // The name of your custom DB table
$schema = self::schema();
// create database table
$table_name = $wpdb->prefix . $table;
$sql = "CREATE TABLE IF NOT EXISTS $table_name ( ";
$sql .= $schema;
$sql .= " ) $charset_collate;";
// run create process
dbDelta( $sql );
}
/**
* Schema: Level Term Rates
*
* Schema definition for the custom table
*/
public static function schema() {
// Define your schema here for the table
$schema = "id int(8) unsigned NOT NULL AUTO_INCREMENT,
age int(3) NOT NULL DEFAULT \'0\',
first_name text NOT NULL DEFAULT \'\',
last_name text NOT NULL DEFAULT \'\',
gender char(1) NOT NULL DEFAULT \'\',
PRIMARY KEY (id)";
return $schema;
}
}
/**
* Register Hooks
*/
register_activation_hook( __FILE__, array( \'DB_Table\', \'create\' ) );
endif;
?>