*

ペンション・民宿・プチホテル用 宿泊予約 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 プラグインを作る(9)空室管理画面を考える

前回までで基本的なプラグインの制作方法を簡単に学びました。今回からは空室管理の画面を作ってみます。柔

記事を読む

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

空室情報のデータベース処理を一気に終えました。ごちゃごちゃしてきたので、もっとスッキリ書く方法が無い

記事を読む

WordPressのプラグインで独自のページを作る方法がわからない

Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(5)メニュー階層化

今回はオリジナルプラグインの管理画面でのメニュー作成について。かなりすんなりと出来てしまったので短め

記事を読む

WordPress用プラグインで使う宿泊予約用カレンダーをPHPで書くぜ

ペンション・民宿・プチホテル用 宿泊予約 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 ↑