*

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

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

記事を読む

新バーチャル歌姫デビュー CeVIO Creative Studio は期待して良さそう

既にサンプル曲がガンガンアップされています。噂の歌声合成ソフト CeVIO Creative Stu

記事を読む

ワードプレス用宿泊予約プラグイン開発「空室情報の表示」とか

久しぶりのワードプレスネタ。全然完成しませんわ。今回は最初にブラウザのキャッシュを切る作業をしました

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(7)セキュリティ対策

ここでセキュリティ対策についてまとめて復習してみます。ネットを検索すると、さまざまな対策が紹介されて

記事を読む

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

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

記事を読む

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

Message

メールアドレスが公開されることはありません。

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

DJI Osmo Mobile 2 を少し使ってみた感想など

BlackMagicDesign URSA mini 4.

DJI Osmo Mobile 2 の少しディープなレビュー

DJI Osmo Mobile 2 を選んだのは「アクティブトラック」

スマホ用ジンバル比較=DJI OSMO mobile2 vs ZHIYUN Smooth 4 vs MOZA mini-mi

さて! 聞いて気になる見て欲しくなる。うれし恥ずかしスマホ用ジンバルの

【実験】Neewer 37mmクリップオンND 2-400 NDフィルタークリップ付きの性能を確認

前回の記事「FiLMiC pro 〜 iPhoneで動画撮影本気モード

FiLMiC pro 〜 iPhoneで動画撮影本気モード

俄然! iPhoneの有効活用が気になり始めました。 前回プレビ

→もっと見る




  •  

PAGE TOP ↑