当前位置:首页 > 建站教程 > WordPress插件制作教程(五): 创建新的数据表

WordPress插件制作教程(五): 创建新的数据表

2年前 (2024-09-07)建站教程680
上一篇讲解了怎样将数据保存到数据库,今天为大家讲解创建新的数据表,也就是说当我们激活插件的时候,会在该数据库下面创建一个新的数据表出来。原理很简单,激活插件的时候运行创建数据库的代码。看下面代码:
<?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

扫描二维码推送至手机访问。

欢迎转载或分享本篇文章。

本文链接:https://www.jcba123.com/article/9964

分享给朋友:

“WordPress插件制作教程(五): 创建新的数据表” 的相关文章

国外免费空间整理汇总-免费虚拟主机和免费PHP空间收集

国外免费空间整理汇总-免费虚拟主机和免费PHP空间收集

市面上免费空间非常多,但是好用的、值得长期收藏的免费空间却占少数,而且免费空间还存在各种各样的问题,比如有些免费空间会无故删除账号,有些免费空间不能绑定域名,有些免费空间会强制加入广告……所以大家在选用免费空间时一定擦亮眼睛。 一、免费空间整理汇总 名...

Opencart启用Rewrite伪静态

Opencart安装完成后默认是不开启伪静态的,如果要开启需要手动过进行两步配置,如下。 1 后台开启 登录 Opencart 后台,选择面板 System > Settings,在 Store List 中点击商店后的“Edit”按钮,配置 Server 下的 Use SEO URLs 为...

使用 WP Downgrade 在线降级 WordPress 到旧版本!

我们都知道,每当WordPress有新本的时候,我们都可以在后台一键更新。但是有些时候,我们的主题或插件可能不兼容新版本的WP,这时候我们如果要降级为之前的旧版本,该怎么操作呢?下面一起来看看。 重要提示:不管是升级还是降级,操作前,请务必备份你的网站数据,尤其是网站的数据库,以防万一!...

WordPress 如何批量修改文章信息?

你是否遇到过如下几种状况: 博客更换域名,博客文章的内容也要跟着换 使用的图片地址更换了 写了很多文章,回过头来想切换作者 想删除某个可恶留言者的所有留言 想更改某个留言者所有留言的网站URL 想要禁用所有文章的pingback 想要禁用所有文章的评...

介绍使用WordPress时10个常用的MySQL查询

多数使用 WordPress 搭建的网站,其后台都是 MySQL 数据库,经常我们需要定制 WordPress 的功能,这里我们列表 10 个最有用的 WordPress 的数据库查询,你需要一个数据库的管理工具,例如 phpMyAdmin 或者 Navicat 等来执行这些 SQL 语句。...

8个好用的WordPress RSS Feed插件

8个好用的WordPress RSS Feed插件

什么是RSS Feed? RSS代表“Really Simple Syndication”,但它也可能意味着“丰富站点摘要”或“实时简单联合组织”。这是一种基于XML的内容格式,可向用户更新所有他们喜欢的网站上的最新新闻,文章,标题和内容。 由于已经存在了很长一段时间,因此许多人都认为RSS...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。