ペンション・民宿・プチホテル用 宿泊予約 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のプラグインで独自のページを作る方法がわからない
Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(6)初期設定画面
ここまでで、ひと通りの仕組みというか流れは理解できたような気がします。まずは初期設定画面から制作して
-
WordPress用プラグインで使う宿泊予約用カレンダーをPHPで書くぜ
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作るシリーズで使う、空き部
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(11)空室管理画面 B
空室管理画面の2回目。今回は空室状況の入力欄と月が変わった時の処理を加えてみます。今回は一覧表示なの
ご質問は掲示板へお願いいたします。