寫一個外掛的重點其中之一,讓外掛能自動建立本身所需的資料表是很重要的,如果是要在複數個網站安裝自己寫的外掛這個部分就更加重要
下面就讓我們來看看要如何做到讓外掛自動建立資料表
主要步驟如下:
首先在class的function __construct內加入
if(!defined('ABSPATH'))exit;
$this->CreateTable();
//自動新增所需資料表
CreateTable就是待會我們要建立資料表的function,將上述語法放在 function __construct 內是為了要讓其自動執行,達到自動建立的效果
接下來讓我們看CreateTable()內的內容
function CreateTable(){
global $wpdb;
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
//要更新資料表就得require這支wp程式
$charset_collate=$wpdb->get_charset_collate();//取得資料表的預設編碼
//如果有中文就設成utf8避免亂碼
/*begin of 有多個table就要寫多個區塊*/
$table_name=$wpdb->prefix.'_user_register';
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'")!=$table_name){
$sql="CREATE TABLE `{$wpdb->prefix}_user_register` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`名字` varchar(10) NOT NULL,
`密碼` varchar(100) NOT NULL,
`信箱` varchar(50) NOT NULL,
`手機` varchar(10) NOT NULL PRIMARY KEY
)$charset_collate;";
//如果要限制一人只能註冊一個帳號,建議把手機設為primary key並且在註冊流程加上手機認證
dbDelta($sql);
/*end of 有多個table就要寫多個區塊*/
}
}
邏輯上簡單來說是先用 SHOW TABLES LIKE ‘$table_name’ 來確認是否已存在同名稱的資料表,若不存在就使用dbDelta這個函式來建立該資料表
以簡易框架教學那篇的架構來說的話,如果資料表少我就會放在main.php內