WordPressプラグイン作成教程(五):新規データテーブル作成
7065 ワード
前回はデータをデータベースに保存するにはどうすればいいですか?について説明しましたが、今日は新しいデータテーブルを作成するということです.つまりプラグインをアクティブにすると、このデータベースの下に新しいデータテーブルを作成します.原理は簡単です.プラグインをアクティブにするとデータベースを作成するコードを実行します.次のコードを見てください
基本的にはWordPressデータベース関連関数を使って動作します.これはみなさんによく知ってもらいたいです.公式文書:http://codex.wordpress.org/Creating_Tableswith_Plugins
<?php
/**
* @package
* @version 1.0
*/
/*
Plugin Name:
Plugin URI: http://www.cnblogs.com/fxmbz/p/4060296.html
Description: , ,
Author: myname
Version: 1.0
Author URI: http://www.cnblogs.com/fxmbz
*/
// WordPress
define('MY_PLUGIN_VERSION_NUM', '1.0');
define('MY_PLUGIN_MINIMUM_WP_VERSION', '4.0');
// $wpdb
global $wpdb;
define('MY_NEW_TABLE', $wpdb->prefix . 'mynewtable');
// , , WP options
register_activation_hook(__FILE__, 'plugin_activation_cretable');
function plugin_activation_cretable() {
global $wpdb;
/*
* We'll set the default character set and collation for this table.
* If we don't do this, some characters could end up being converted
* to just ?'s when saved in our table.
*/
$charset_collate = '';
if (!empty($wpdb->charset)) {
$charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
}
if (!empty( $wpdb->collate)) {
$charset_collate .= " COLLATE {$wpdb->collate}";
}
$sql = "CREATE TABLE " . MY_NEW_TABLE . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
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 );
// update_option() , options , ,
update_option('my_plugin_version_num', MY_PLUGIN_VERSION_NUM);
}
// , ,
register_activation_hook(__FILE__, 'plugin_activation_insertdate');
function plugin_activation_insertdate() {
global $wpdb;
$data['name'] = ' ';
$data['text'] = ' !';
$data['url'] = 'http://www.cnblogs.com/fxmbz';
$wpdb->insert(MY_NEW_TABLE, $data);
}
// , ,
add_action('plugins_loaded', 'myplugin_update_db_check');
function myplugin_update_db_check() {
// options , ,
if (get_option('my_plugin_version_num') != MY_PLUGIN_VERSION_NUM) {
plugin_activation_cretable();
}
}
// , , options
register_deactivation_hook(__FILE__, 'plugin_deactivation_deltable');
function plugin_deactivation_deltable() {
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS " . MY_NEW_TABLE);
delete_option('my_plugin_version_num');
}
基本的にはWordPressデータベース関連関数を使って動作します.これはみなさんによく知ってもらいたいです.公式文書:http://codex.wordpress.org/Creating_Tableswith_Plugins