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
WordPress插件制作教程(五): 创建新的数据表的更多相关文章
- WordPress插件制作教程概述
接下来的一段时间里,开始为大家讲解WordPress插件制作系列教程,这篇主要是对WordPress插件的一些介绍和说明,还有一些我们需要注意的地方,以及需要掌握的知识. WordPress插件允许你 ...
- WordPress插件制作教程(一): 如何创建一个插件
上一篇还是按照之前的教程流程,写了一篇WordPress插件制作教程概述,从这一篇开始就为大家具体讲解WordPress插件制作的内容.这一篇主要说一下插件的创建方法. 相信大家都知道插件的安装文件在 ...
- WordPress插件制作教程(四): 将数据保存到数据库
上一篇讲解了添加菜单的方法,这一篇为大家讲解如何将数据保存到数据库中,并且显示在页面上,不会因提交表单时刷新页面输入框中内容消失.要实现这一功能我们需要借助WordPress函数来实现,下面就来讲解具 ...
- WordPress插件制作教程(八): 最后总结
WordPress插件教程最后一篇,还是为大家简单的做下总结.这次插件制作教程讲的内容和知识点个人觉得不是很多,因为插件制作不单单是这些内容,它涉及的知识很多很多,不是说你会一些函数就可以做出一个好的 ...
- WordPress插件制作教程(六): 插件函数之动作(Actions)函数
这一篇为大家说一下WordPress插件函数吧,要制作插件,了解这些函数是非常有必要的 WordPress插件函数分为“动作”(Actions)和过滤器”(Filters),WordPress 使用这 ...
- WordPress插件制作教程(二): 编写一个简单的插件
上一篇说到了如何创建一个插件,我想大家看了之后一定会有所收获,这一篇简单给大家写一个插件样例,让大家有一个基本的印象.这个插件的样例就是当你激活这个插件后会在你的每篇文章中插入一段自己定义好的内容,比 ...
- WordPress插件制作教程(七): 插件函数之过滤器(Filter)函数
上一篇对插件函数之动作(Action)函数做了下介绍,这篇在介绍下过滤器(Filters). 过滤器是一类函数,WordPress执行传递和处理数据的过程中,在针对这些数据做出某些动作之前的特定运行( ...
- WordPress插件制作教程(三): 添加菜单的方法
上一篇编写了一个简单的插件,让大家对插件的简单制作有个了解,这一篇我们在更深一步,当我们激活插件后后台会显示菜单出来,然后通过单击菜单显示自己定义好的信息.激活之后会在WordPress后台显示一个菜 ...
- WordPress主题制作教程5:循环
wordpress循环分两种,一种是自定义循环,一种是默认循环. 自定义循环:根据指定参数进行实例化 调用所有页面,post_type值:page对应页面,post对应文章 <?php $arg ...
随机推荐
- Flask学习记录之Flask-Mail
Flask-Mail可以连接到配置中的SMTP服务器,进行邮件发送,如果没有进行SMTP服务器的配置,将会默认连接到localhost上的 一.配置及初始化 (1)flask应用配置 #配置选项 MA ...
- Python一路走来 线程 进程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- HTML&CSS基础学习笔记1.5-添加常用标签
代码如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...
- Android热补丁动态修复
1.前言 由于公司项目中使用到热修复技术,之前对这块技术知之甚少,所以有时间去学习了解了一下. 2.学习资源 2.1 热修复介绍 还是鸿洋老师的精彩讲解,中间引用了Andorid dex分包方案和QQ ...
- .net core3
- 关于mobiscroll插件的使用
在网上找了很多资料,各大猿友对这个插件都做了很详细的介绍,我也是看了很多资料才发现原来这个插件有一些需要注意的地方,在这总结了一下: //时间 var currYear = (new Date()). ...
- MVC3路由设置访问后缀 html jsp
C# Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 publ ...
- UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6
一.IPV4首部 IP层提东无连接不可靠的数据报递送服务.它会尽力把IP数据报递送到指定的目的地,然而并不保证他们一定到达,也不保证他们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次.任何 ...
- C++中构造函数初始化成员列表总结
1.只能在构造函数初始化列表初始化的成员变量的类型? a.const成员变量 b.引用类型的成员变量 c.static不能在初始化列表中进行初始化 d.类成员变量中有自定义类型的变量最好在初始化列表中 ...
- VC青睐服装订制网站 市场规模超3000亿美元 - 找VC - 创业邦
VC青睐服装订制网站 市场规模超3000亿美元 - 找VC - 创业邦 VC青睐服装订制网站 市场规模超3000亿美元