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

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

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

新手小白必看!超详细独立站入门教程,带你从零打造自己的独立站

新手小白必看!超详细独立站入门教程,带你从零打造自己的独立站

随着电商的快速发展,越来越多的人开始关注独立站这个新兴的行业。独立站是指自己建立并运营的电商网站,具有自主性、个性化、灵活性的特点,成为许多新手小白进军电商领域的首选。那么,如何从零开始打造自己的独立站呢?下面,我们就为大家带来一篇超详细的独立站入门教程。 一、确定业务方向...

免费域名注册平台有哪些 (免费域名注册:无需花费一分钱的专属网站名称)

在建立一个网站时,一个关键的步骤是注册一个域名。域名是网站的网址,它可以帮助用户更容易地找到并访问你的网站。然而,一些人可能面临经济困难,希望能够找到一个免费的域名注册平台。在本文中,我们将介绍一些免费的域名注册平台,这些平台可以让你获得一个无需花费一分钱的专属网站名称。 1. Freenom...

教你如何做英文博客提交网站外链

教你如何做英文博客提交网站外链

英文博客提交网站外链在所有外链类型中一直算是质量比较高的外链了,尤其是对于很多需要养的英文博客来说,这些外链更是必不可少,多多益善,但是相对来说,这类网站还是比较珍稀的,所以,今天环新给出的这十个依旧非常活跃的博客提交站资源可以说是非常有价值的,希望大家能够好好利用。 资源如下:...

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

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

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

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

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

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

发表评论

访客

看不清,换一张

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