ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(4)データベース基礎
今回はWordPressのプラグイン開発で必要になるデータベースに関する知識ついて調べました。この辺りは定番なようで、割りと簡単に情報を見つけることができます。
独自のテーブルを利用するケースでは、プラグインが有効化された段階でテーブルを自動作成させるのが便利です。無効化で削除も必要?
またまたこちらのページを参考(パクリ)にさせていただきました。感謝!
http://www.webopixel.net/wordpress/637.html
プラグインを有効にしたときデータベースを作成する
プラグインの有効化は「register_activation_hook」という関数(フック)を使います。
wp-contents/plugins/drtehotel/drtehotel.php
public $table_name;
public function __construct() {
global $wpdb;
$this->table_name = $wpdb->prefix . 'rooms';
register_activation_hook (__FILE__, array($this, 'activate'));
add_action('admin_menu', array($this, 'add_pages'));
}
function activate() {
global $wpdb;
省略
具体的にはコンストラクターでテーブル名を指定して「register_activation_hook」の引数「’activate’」を実行させます。テーブルが存在するかどうかの確認はfunction activate 側に実装します。
function activate() {
global $wpdb;
$this->table_name = $wpdb->prefix . 'rooms';
if ($wpdb->get_var("SHOW TABLES LIKE '$this->table_name'")
!= $this->table_name) {
include_once "class/initialization.php";
$io = new INIT();
$io->create_table($this->table_name);
}
}
activae関数ではテーブル名でデータベースを調べて存在しない場合はクラスを読み込んで create_tableを実行します。引数はテーブル名です。
wp-contents/plugins/drtehotel/class/initialization.php
function create_table($table_name) {
$sql = "CREATE TABLE " . $table_name . " (
plan_id varchar(2) NOT NULL,
s_date date NOT NULL,
r_count smallint,
r_season varchar(2),
tmp varchar(10)
)
CHARACTER SET 'utf8';";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
クラス側でSQLを組み立てて実行させます。一番最後のdbDeltaを使うのが定番のようです。使用するためにupgrade.phpを読み込んでいます。
一度プラグインを停止して、再度有効化させてみます。

無事にテーブルができています。ここまで完了ですね。
無効化じゃなくて削除でテーブルも削除
プラグインを削除した段階でテーブルも綺麗に削除しておきます。参考にさせていただいたのはこちら。
http://firegoby.jp/archives/2287
2種類の方法があるようです。今回はuninstall.phpをおく方法でやってみます。
wp-contents/plugins/drtehotel/uninstall.php
<?php
if( !defined( 'ABSPATH') && !defined('WP_UNINSTALL_PLUGIN') )
exit();
global $wpdb;
$table_name = $wpdb->prefix . 'rooms';
$sql = "DROP TABLE " . $table_name;
$results = $wpdb->query( $sql );
?>
プラグインを停止してから削除するとテーブルも無事に削除されていました。これを見ると、 global 変数の $wpdb を呼んで $wpdb->query( $sql ) とすることで SQL を実行できるようですね。このあたりは今後のデータの出し入れ時に確認してみます。
時間は管理メニューのサブメニューを。
Sponsored Link
関連記事
-
-
ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」
前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(5)メニュー階層化
今回はオリジナルプラグインの管理画面でのメニュー作成について。かなりすんなりと出来てしまったので短め
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(10)空室管理画面 A
さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(2)
前回の物を若干変更しながら、どんどん進んでいきたいと思います。今回は管理画面の表示内容について行って
-
-
ワードプレス用宿泊予約プラグイン開発「空室カレンダー表示」
前回ネットで検索して見つけた calendar($year = "", $month = "") 関





ご質問は掲示板へお願いいたします。