自作のプラグインを有効化した際に自作のテーブルを作成するときを想定した、基本実装部分のログ。
プラグインインストール時に実行するメソッドを定義する。
[class]
function hippo_install() {
global $wpdb;
$table_name = $wpdb->prefix . "hippo_values";
}
[class]
function install() {
global $wpdb;
$table_name = $wpdb->prefix . "hippo_values";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url varchar(55) DEFAULT '' NOT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
[class]
function add_init_data() {
global $wpdb;
$name = 'hippo';
$text = 'cool!!';
$table_name = $wpdb->prefix . "hippo_values";
$wpdb->insert(
$table_name,
array(
'time' => current_time( 'mysql' ),
'name' => $name,
'text' => $text,
)
);
}
プラグイン有効化時にテーブルを作成して、初期データ入れる。
[class外]
register_activation_hook( __FILE__, ['HippoPlugin', 'install'] );
register_activation_hook( __FILE__, ['HippoPlugin', 'add_init_data'] );
テーブルが作成されたのを確認した。
class1
require_once( ABSPATH . WPINC . '/wp-db.php' );
class hippp_wpdb extends wpdb {
// オーバーライドする
var $tables = array(
'posts',
'comments',
'links',
'options',
'postmeta',
'terms',
'term_taxonomy',
'term_relationships',
'termmeta',
'commentmeta',
'hippo_values'
);
}
class2
class HippoPlugin
{
function get_data() {
$wpdb = new hippp_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
$data = $wpdb->get_results(
"SELECT * FROM `wphhackblog_hippo_values` WHERE id = 1"
// "SELECT * FROM $wpdb->hippo_values WHERE id = 1"
);
return $data;
}
}
HippoPlugin::get_data();
wp-content/db.php
を作成してないせいかうまく機能せず。class2
class HippoPlugin
{
function update_data() {
$wpdb = new hippp_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
$id = 1;
$new_value = 'hoge';
$updated = $wpdb->update( 'wphhackblog_hippo_values', ['text' => $new_value], ['id' => $id] );
return $updated;
}
}
HippoPlugin::update_data();
ここから必要に応じてカスタムしていく感じで。
最後までお読みいただき、ありがとうございました。
ご意見などありましたら@hippohackへDMをお願いいたします。