wordpress外掛開發 讓外掛自動新建所需資料表

nekoto
·
·
IPFS
·

寫一個外掛的重點其中之一,讓外掛能自動建立本身所需的資料表是很重要的,如果是要在複數個網站安裝自己寫的外掛這個部分就更加重要
下面就讓我們來看看要如何做到讓外掛自動建立資料表

主要步驟如下:

首先在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內

原文連結展躍 WordPress 網頁設計

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!