WordPress插件制作教程(五): 創建新的數據表


上一篇講解了怎樣將數據保存到數據庫,今天為大家講解創建新的數據表,也就是說當我們激活插件的時候,會在該數據庫下面創建一個新的數據表出來。原理很簡單,激活插件的時候運行創建數據庫的代碼。看下面代碼:

<?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_Tables_with_Plugins

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM