[WordPress プラグイン 開発]➂プラグインによるテーブルの作成と削除

WordPress

今回はコードを少しでも書きたいと思います。

本日のレジュメ

  • プラグインの有効時にデータベースにテーブルを作る
  • プラグインの無効時にデータベースのテーブルを削除する

WordPress のプラグインを開発するとなると、プラグインのデータをどこに保存するのか?、そして保存するのだから削除できないといけないわけですが・・・。

データベースはMySQLを使っている -> SQL構文が使える。

プラグインによるテーブルの作成と削除

方法としては以下があるもよう。

  • ファイル(テキスト形式等の別ファイル)
  • オプション値(WodPress専用関数あり)
  • 有効期限付き一時データ(WodPress専用関数あり)
  • ショートコード(WodPress専用関数あり)
  • カスタムフィールド(WodPress専用関数あり)
  • データベースに新規テーブル作成(SQL構文を使う)

参考サイト:

  • アルパカ@ラボ – データベースに新しくテーブルを作成する:[59日目]WordPress1日プラグイン
  • OXY NOTES – WordPressのプラグインでデータベースを作成・削除・アップデートする方法
  • セルティスラボ – WordPressプラグインのデータ管理方法ガイド
  • UX MILK – MySQLでテーブル一覧を表示する「SHOW TABLES」

基本的にはオプション値をオススメしているのが多い様な印象・・・

今回はデータベースに新規テーブルを作成する方法でやってみたいと思います。

新しくデータベースにテーブルをつくる

使うファイルは

  • owt_boiler.php -> 最初に読み込まれるファイル
  • includes/class-owt_boiler-acvtivator.php -> プラグインを有効かした時の処理を書くファイル
  • includes/class-owt_boiler-deactivator.php -> プラグインを無効にした時の処理を書くファイル

以上の3つのファイル

owt_boiler.phpファイルのactivate_owt_boiler関数class-owt_boiler-activator.phpを読み込みactivate関数を実行することでデータベースに新規テーブルを作成する様にします。

ここまではすでに、上図のようにボイラープレートを作った時点で処理が出来上がっているので、あとはデーターベースの処理を追加するだけです。

activate関数を次の様にします。

ここがデータベースにテーブル作る処理になります。

次に、テーブルを削除する処理です。

includes/class-owt_boiler-deactivator.phpのdeactivate関数を次のようにします。

unexpected outputエラーの対策

これでデータベースにテーブルを追加したり削除したりできるのですが、このままだとプラグインを有効にした時に以下のような警告がでます。

プラグインはアクティブ化中に583文字の予期しない出力を生成しました。 「ヘッダがすでに送信されています」というメッセージ、シンジケーションフィードに関する問題、その他の問題に気付いた場合は、このプラグインを無効にするか削除してください。

なんだか、プラグインを有効にするときにデータベースにテーブルを作っているのが原因な感じです。

解決策として、今回はデータベースにテーブルを作る処理をプラグインの有効にする時ではなくて、ワンテンポ遅らせれば良い感じになると思います。

とりあえず、activate関数の中身はコメントアウトしてください。

つぎに、includesフォルダに新しくclass-owt_boiler-install.phpを作って、class-owt_boiler.phpで読み込める様にコードを追加します。

class-owt_boiler-install.phpの中身は以下のようになる。

中身は、ほとんど変わっていませんがregister_activation_hookでなくて、add_action(‘admin_init’, array($this, ‘activate’));管理画面の処理にフックする様にしてます。

これで警告はでなくなりました。

なんか他にやりようがあるような気もするけど・・・。

エラーも出ない様なので、これで良しとしよう。

画像よりもコードを載っけた方が良いのかな?・・・ちょっと思案中。

参考サイト:

データベースはSequel Proが見やすくて良い

ちなみに、データベースの状態を見るのには、Sequel Proを使ってます。

phpMyAdminは個人的には使いづらいので・・・その辺はお好みで。

再読み込みしてみる。

ちなみに、SQL構文でテーブルを作るときは、Sequel Proで一度作って、SQL構文をコピーしてくるとコードを書く手間が少しは省けますね。

SQL構文の学習に参考になるサイトがないかな・・・。

Sequel Proについては別記事にしようかなと、すこし長くなってしまった。

ちょっと集中力が・・・。

ではまた次回。

タイトルとURLをコピーしました