Wordpress主题技巧

WordPress 教程:为插件自定义数据表

WordPress 教程:为插件自定义数据表

当你写插件的时候,你可能需要写东西到数据库中去,一般来说,有两种数据要存储,第一种是安装数据,一般存储在 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(我们需要加载该文件,默认是不会加载的)中的 dbDeltadbDelta 函数会检查当前的表结构,和需要的表结构进行比较,所以无论添加或者修改表都会非常方便。关于具体怎样使用 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 插件高级版的 新功能:自定义文本回复。 :-)

标签:WordPress 插件 WordPress 教程

Wordpress主题技巧

更多有关于 Wordpress主题技巧

Metaslider幻灯片使用详解!

塔克网整站模板 安装使用指南

WordPress如何备份网站数据库和文件?WordPress整站搬家操作流程。

WordPress网站安全设置教程

国外英文广告联盟网站模板,WordPress主题整站演示地址列表

WordPress主题开发:开启文章缩略图功能

WordPress 自定义头像插件:WP User Avatar

WordPress 后台管理界面UI自定义插件:WP Admin UI Customize

WordPress 自定义文章/页面阅读权限的插件:User Specific Content

本人擅长Ai、Fw、Fl、Br、Ae、Pr、Id、Ps等软件的安装与卸载,精通CSS、JavaScript、PHP、ASP、C、C++、C#、Java、Ruby、Perl、Lisp、Python、Objective-C、ActionScript、Pascal等单词的拼写,熟悉Windows、Linux、OS X、Android、iOS、WP8等系统的开关机。

通过下面的方式来联系我们:

电邮:138762189@qq.com

联系QQ:点击这里给我发消息

官方站:www.tadke.com

※ ※ 联系请加我的企鹅号 ※※

※ ※技术支持请微信联系站长 ※※

Copyright © 2016 Tadke.com. Powered by Wordpress.