• 注册
  • 代码教程 代码教程 关注:6 内容:36

    WordPress之安装插件后PHP创建数据库,可创建多个数据库及字段

  • 查看作者
  • 打赏作者
  • 9 渡劫 后期

    WordPress之安装插件后PHP创建数据库,可创建多个数据库及字段,这里就创建两个数据表做示例

    //———————————————————————————————————————————创建数据库-开始———————————————————————————————————-
        // 声明常量来存储插件版本号 和 该插件最低要求WordPress的版本
        define('MY_PLUGIN_VERSION_NUM', '1.0');
        define('MY_PLUGIN_MINIMUM_WP_VERSION', '4.0');
        // 声明全局变量$wpdb 和 数据表名常量
        global $wpdb;
        define('TXK_DATA_TABLE', $wpdb->prefix.'table_name_1');//数据表_1
        define('TXK_AGO_TABLE', $wpdb->prefix.'table_name_2');//数据表_2
        // 插件激活时,运行回调方法创建数据表, 在WP原有的options表中插入插件版本号
        register_activation_hook(__FILE__, 'hxlt_plugin_activation_cretable');
        function hxlt_plugin_activation_cretable() {
            global $wpdb;
            $charset_collate = '';
            if (!empty($wpdb->charset)) {
                $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
            }
            if (!empty($wpdb->collate)) {
                $charset_collate.= " COLLATE {$wpdb->collate}";
            }
    //数据表_1
            $sql_txk_data = "CREATE TABLE " . TXK_DATA_TABLE . " (
            ID mediumint(9) NOT NULL AUTO_INCREMENT,
            txk_user_id int(11),
            txk_name text,
            txk_link text,
            txk_get_type text,
            txk_get_time text,
            txk_end_time text,
            UNIQUE KEY id (ID)
        ) $charset_collate;";
        
    //数据表_2
            $sql_txk_record = "CREATE TABLE " . TXK_AGO_TABLE . " (
            ID mediumint(9) NOT NULL AUTO_INCREMENT,
            txk_user_id int(11),
            txk_name text,
            txk_link text,
            txk_get_type text,
            txk_get_time text,
            txk_end_time text,
            UNIQUE KEY id (ID)
        ) $charset_collate;";
            require_once (ABSPATH . 'wp-admin/includes/upgrade.php');
            dbDelta($sql_txk_data);
            dbDelta($sql_txk_record);
            // update_option()方法,在options表里如果不存在更新字段,则会创建该字段,存在则更新该字段
            update_option('my_plugin_version_num', MY_PLUGIN_VERSION_NUM);
        }
    
        // 当加载插件时,运行回调方法检查插件版本是否有更新,
        add_action('plugins_loaded', 'hxlt_plugin_update_db_check');
        function hxlt_plugin_update_db_check() {
            // 获取到options表里的插件版本号 不等于 当前插件版本号时,运行创建表方法,更新数据库表
            if (get_option('my_plugin_version_num') != MY_PLUGIN_VERSION_NUM) {
                hxlt_plugin_activation_cretable();
            }
        }
        
        // 插件停用时,运行回调方法删除数据表,删除options表中的插件版本号
        register_deactivation_hook(__FILE__, 'hxlt_plugin_deactivation_deltable');
        function hxlt_plugin_deactivation_deltable() {
            global $wpdb;
            $wpdb->query("DROP TABLE IF EXISTS " . TXK_DATA_TABLE);//数据表_1
            $wpdb->query("DROP TABLE IF EXISTS " . TXK_AGO_TABLE);//数据表_2
            delete_option('my_plugin_version_num');
        }
    //———————————————————————————————————————————创建数据库-结束———————————————————————————————————-

    请登录之后再进行评论

    登录
  • 任务
  • 偏好设置
  • 到底部
  • 帖子间隔 侧栏位置: