WordPressプラグイン開発 – 【成功】オリジナルテーブルを追加する

このブログは初心者がPHPを独習する過程で備忘録的に書いています。内容に不理解による誤りがあるかもしれません。もし、誤りがありましたらご指摘頂けば幸いです。

お盆休み前の仕事も無事完了し、自由な時間が多少できたのでゴニョゴニョやってます。

プラグイン有効化時に実行する処理〜オリジナルテーブルを追加しテーブルに行を追加

何とかここまでできました。細かいことは置いといて、今のところはテーブルが追加できればいいんです。

プラグイン有効化時に実行する処理

プラグインのテーブルは、プラグインを有効化した時に作成します。すでにテーブルがある場合はアップデートします。なので、アクティベーションフックに登録する必要があります。アクティベーションフックとは、プラグインを有効化したときにWordPressに処理をひっかけるということです。

//必要なファイルを読み込む
require_once dirname(__FILE__).DIRECTORY_SEPARATOR."lib".DIRECTORY_SEPARATOR."client.class.php";

//インスタンスを初期化
global $kpc;
$version = 0.3;
$kpc = new Kpwp_Client($version);

//アクティベーションフックに登録
register_activation_hook(__FILE__, array($kpc, "activate"));

オリジナルテーブルを追加

ほぼこちらのブログのパクリです。パクリで申し訳ないですが、今の段階では、とにかく動くかどうかを確認しています。client.class.phpというファイルを別途作ってkpw_clientというテーブルを作成する関数を定義します。

//client.class.php

class Kpwp_Client{

var $table = "kpw_client";

function sql(){
$char = defined("DB_CHARSET") ? DB_CHARSET : "utf8";
return <<<EOS
CREATE TABLE {$this->table} (
`ID` BIGINT(11) NOT NULL AUTO_INCREMENT,
`object_id` BIGINT(11) NOT NULL,
`post_type` VARCHAR(45) NOT NULL,
`positive` BIGINT(11) NOT NULL,
`negative` BIGINT(11) NOT NULL,
`updated` DATETIME NOT NULL,
UNIQUE(`ID`)
) ENGINE = MyISAM DEFAULT CHARSET = {$char} ;
EOS;
}

function __construct(){
//初期化時にテーブル名を決定する
global $wpdb;
$this->db = $wpdb->prefix.$this->db;
//オプションからkpc_client_db_versionというデータを取得する。なければ0。
$this->db_version = get_option('kpc_client_db_version', 0);
}

function activate(){
global $wpdb;
//データベースが存在するか確認
$is_db_exists = $wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $this->table));
if($is_db_exists){
//データベースが最新かどうか確認
if($this->db_version >= $this->version){
//必要なければ関数を終了
return;
}
}
//ここまで実行されているということはデータベース作成が必要
//必要なファイルを読み込み
require_once ABSPATH."wp-admin/includes/upgrade.php";
//dbDeltaを実行
//データベースが作成されない場合はSQLにエラーがあるので、
//$wpdb->show_errors(); と書いて確認してください
dbDelta($this->sql());
//データベースのバージョンを保存する
update_option("kpc_client_db_version", $this->version);
}

}

?>

テーブルに行を追加

できたkpw_clientテーブルに行を追加しデーターを入れます。

//client.php

//テーブルに行を追加
$tablenane = 'kpw_client';

global $wpdb;
$wpdb->insert( 
$tablenane, 
array( 
'positive' => 1, 
'negative' => 2
), 
array( 
'%d', 
'%d'
) 
);

phpMyAdminで確認する

実行するたびに行が追加されてしまいますが、とりあえず動いているようです。

やったー!

意味のないデーターですが追加されています。

あとは、こいつを「顧客」ページで読み出してやるだけ。

まとめ

やっぱプラグイン開発の勉強にはまとまった時間が必要ですね。あせってやると何がなんだかわからなくなってしまいます。

仕事も夏休みに入ったことだし、可能な限り順を追ってコツコツやっていこうと思います。

追記
実はこの方法ではテーブル名にプレフィックスが追加できません。以下の記事で改善方法を書いていますので御覧ください。
WordPressプラグイン開発 - 【成功】今度こそプラグイン独自のテーブル作成
お勉強&開発は、様々なハードルに躓き転んで行ったり来たりしております。しかしながら、諦めず何度もやり直しながら、その都度新たな学びがあります。 プラグイン独自テーブルが作成できました! 実は前回にも独自のテーブル作成には成功して...
2019/9/11 WordPressプラグイン開発は一旦終了しLaravelでの開発に切り替えました。

カンタンProWPとは
ファイルメーカーProを使用しないでWEB上でカンタンProの機能を実現するWordPressのプラグインです。2019年7月4日から開発を始めています。

だれでも手軽に、どこでも、安価にカンタンProを利用できるようにすることが開発の目的です。PHP(プログラミング言語)を使った開発になります。PHPについて一から勉強して開発を進めていきます。

コメント