ペンション・民宿・プチホテル用 宿泊予約 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 プラグインを作る(1)
初心者が、あらためて WordPress のプラグインを一から作る経過報告。たぶん連載記事ですね。途
-
-
新バーチャル歌姫デビュー CeVIO Creative Studio は期待して良さそう
既にサンプル曲がガンガンアップされています。噂の歌声合成ソフト CeVIO Creative Stu
-
-
WordPressのプラグイン開発を効率的にするフレームワークたち
Wordpressでプラグインを作っていて「フレームワーク使えないのかな?」と疑問を持ちました。そこ
-
-
WordPressのプラグインで独自のページを作る方法がわからない
Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(3)
前回のソースがイマイチだったので若干書き直しました。しかし、これで正しいのかも疑問なんですが、取り敢





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