*

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(4)データベース基礎

公開日: : 最終更新日:2013/06/20 WordPress ,

今回は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を読み込んでいます。

一度プラグインを停止して、再度有効化させてみます。

スクリーンショット 2013-06-15 22.24.25

無事にテーブルができています。ここまで完了ですね。

無効化じゃなくて削除でテーブルも削除

プラグインを削除した段階でテーブルも綺麗に削除しておきます。参考にさせていただいたのはこちら。

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 プラグインを作る(10)空室管理画面 A

さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(11)空室管理画面 B

空室管理画面の2回目。今回は空室状況の入力欄と月が変わった時の処理を加えてみます。今回は一覧表示なの

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(6)初期設定画面

ここまでで、ひと通りの仕組みというか流れは理解できたような気がします。まずは初期設定画面から制作して

記事を読む

WordPressのプラグイン開発を効率的にするフレームワークたち

Wordpressでプラグインを作っていて「フレームワーク使えないのかな?」と疑問を持ちました。そこ

記事を読む

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

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKにジンバルを入れる

やっぱり高いけどEndurance (エンデュランス) カメラバッグの

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKが北の国から

一年中GWの美少女です。 Lowepro カメラリュック フリッ

MOZA Mini-S スマホ用スタビライザーが届いた!

1万円弱で買えるスマホ用ブラシレスジンバルの新型 MOZA Mini-

GoPro Hero7 Black用 保護ケース アルミ合金保護フレームがいいよって話

別に大した話ではありません。 最近書くことが少ないのでたまには書

期待の新製品 MOZA Mini-S スマホ用スタビライザーが発売されたみたい

教えてもらった新製品のホームページで MOZA Mini-Sが紹介され

→もっと見る




  •  

PAGE TOP ↑