WordPress

データベースのテーブルを削除する:【60日目】WordPress1日1プラグイン

投稿日:

ようこそのお運びで、厚く御礼申し上げます。
60日目です。前回はテーブルの作成でしたが、今回はデータベースのテーブルの削除を行います。

自作プラグインを削除するとき、作成したデータベーステーブルを削除する。

前回のようにプラグインをインストールするときに作成したデータベースのテーブルを、プラグイン削除のときにこのデータベースのテーブルも削除する。

今回の仕様。

前回のように、「データベースのテーブルを作成した」場合に、この処理が発生しますので、前回とセットと思った方が良いです。なので今回は

  • プラグインインストール時のデータベースのテーブル作成と組み合わせ
  • プラグイン削除時に、作成したデータベースのテーブルを削除
  • プラグイン削除時に、設定したテーブルのバージョンを削除

前回のデータベースのテーブル作成について記事はこちらからどうぞ。


プラグイン削除時の関数実行については以前書いた記事を参照してください。

今回は、まず削除のコードを作成しました。

前回のコードとの組み合わせになるので、まず今回の主題:プラグイン削除時のテーブル削除についてのコードを作成しました。

new Paka3_DatabaseTable ;

class Paka3_DatabaseTable{
  public $paka3_db_version = "1.0";
  
  public function __construct(){
    global $wpdb;
    //データベースのテーブル名
    $this->table_name = $wpdb->prefix . 'paka3Table';
    //削除時に実行
    if(function_exists('register_uninstall_hook')) {
       register_uninstall_hook (__FILE__,array($this,'paka3_plugin_end'));
    }
  }
   
   //プラグインの削除時
   //データベースのテーブル削除
   public function paka3_plugin_end(){
      global $wpdb;
      delete_option('paka3_db_version');
      $sql = "DROP TABLE ".$this->table_name;
      $wpdb->query($sql);
   }
    
}

※前回のコードと組み合わせたものは最後、gistに記述します。

ポイントはどこ?

  • register_uninstall_hookを使って、プラグイン削除時に関数paka3_plugin_endを実行する。
     if(function_exists('register_uninstall_hook')) {
           register_uninstall_hook (__FILE__,array($this,'paka3_plugin_end'));
        }
  • データベースのテーブル削除は、SQL文(Drop Table)を$wpdb->queryで実行させておこないます。
    global $wpdb;
          delete_option('paka3_db_version');
          $sql = "DROP TABLE ".$this->table_name;
          $wpdb->query($sql);
  • プラグイン削除時にWordPressのoptionに設定したこのテーブルのバージョンについても削除します。
    delete_option('paka3_db_version');

コードをプラグイン用のファイルにします

それでは、「Paka3_DatabaseTable.php」というファイルを作成し、以下のコードを記入します。

※前回のプラグインインストール時のテーブル作成のコードと組み合わせました。

このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。

今回のまとめ

今回はデータベースのテーブルの削除について書いてみました。これで、プラグインインストール時の追加と削除という初期設定が出来上がりました。次回はこれにデータを入れてみたいと思います。

-WordPress
-, , ,

Copyright© アルパカ@ラボ , 2024 All Rights Reserved Powered by AFFINGER5.