WordPress 教程:为插件自定义数据表_网页设计教程
推荐:如何使用查找我的iPhone教程手机丢了第一步就是要先定位,这个就不用说了,如果你还没有开启定位功能赶紧回去开吧,就算不是被偷也有可能找不到的,开启后又电脑和账号就能定位了,今天带大家一起来看
当你写插件的时候,你可能需要写东西到数据库中去,一般来说,有两种数据要存储,第一种是安装数据,一般存储在 wp_options 表中,使用 WordPress 的 options 机制来实现。第二种是数据,可以存储到 postmeta 表或者 usermeta 表中。如果数据特别多,就需要单独创建数据表了。这篇文章就讲讲如何在写插件时候创建数据表。
一般在写插件时候创建数据库有如下三个步骤:
-
创建一个添加新数据表的 PHP 函数。
-
保证插件启动的时候调用这个函数。
-
如果新版本有不同的数据表结构,创建一个升级函数。
今天我就以微信机器人 WordPress 插件高级版的 新功能:自定义文本回复,来讲解下这个过程,其中的第三步,由于没有数据库的升级不涉及。
创建一个添加新数据表的 PHP 函数
我们这个插件的安装函数叫做:weixin_robot_texts_crate_table
。
1. 数据库表前缀
默认 WordPress 数据库标签前缀都是 wp_
,但是有人如果在一个数据库安装两个及以上 WordPress,就需要在 wp-config.php
设置 WordPress 数据库表前缀来区别,所以我们向 WordPress 数据库添加新表的时候,要先找找到数据库表前缀。我们可以在变量 $wpdb->prefix
找到。代码如下:
global $wpdb;$table_name = $wpdb->prefix . "weixin_robot_texts";
2. 判断表是否存在
可以通过一条 SHOW TABLES
SQL 查询来判断。
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name)
3. 创建数据表
这步就是实际来创建一个数据表了。我们这个表有5个字段,id
自定义文本回复的 ID。keyword
微信发送过来的关键字,reply
自定义回复,time
添加的时间,status
是否启用,有时候只是不想暂时不想启用,而不是删除。
这里我不用直接的 SQL 查询来创建,而是使用在 wp-admin/upgrade-functions.php
(我们需要加载该文件,默认是不会加载的)中的 dbDelta
。dbDelta
函数会检查当前的表结构,和需要的表结构进行比较,所以无论添加或者修改表都会非常方便。关于具体怎样使用 dbDelta
,详细可以看 wp-admin/upgrade-schema.php
中的例子。
$sql = "CREATE TABLE " . $tablename . " (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`keyword` varchar(255) CHARACTER SET utf8 NOT NULL,
`reply` text CHARACTER SET utf8 NOT NULL,
`status` int(1) NOT NULL DEFAULT '1',
`time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
最后这个 weixin_robot_texts_crate_table
函数为:
function weixin_robot_texts_crate_table() {
global $wpdb;
$table_name = $wpdb->prefix . "weixin_robot_texts";
if($wpdb->get_var("show tables like '$table_name'") != $weixin_robot_texts_table)
{
$sql = "CREATE TABLE " . $table_name . " (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`keyword` varchar(255) CHARACTER SET utf8 NOT NULL,
`reply` text CHARACTER SET utf8 NOT NULL,
`status` int(1) NOT NULL DEFAULT '1',
`time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql); }}
保证插件启动的时候调用创建数据表函数
我们使用 register_activation_hook
调用上面创建数据表的函数。
register_activation_hook( __FILE__,'weixin_robot_texts_crate_table');
分享:微信公众平台教程(二) 消息管理与群发这部分主要讲解微信公众平台的消息管理技巧和群发注意事项,我会结合一些营销要数加入到本篇教程里面,希望能帮助大家在营销和使用上更加得心应手。如果对本篇教程有任何疑
- 相关链接:
- 教程说明:
网页设计教程-WordPress 教程:为插件自定义数据表。