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

五月 09
磊子 2012年 13 条评论

上一篇讲解了怎样将数据保存到数据库,今儿为大家讲解创建新的数据表,也就是说当我们激活插件的时候,会在该数据库下面创建一个新的数据表出来。原理很简单,激活插件的时候运行创建数据库的代码,这样就可以了。看下面代码:

<?php

/*
Plugin Name: 创建数据表
Plugin URI: http://www.favortt.com/wordpres-plugins-two.html
Description: 这是一款简单的插件样例,将自己定义好的内容显示每篇文章里面。
Author: 磊子
Version: 0.1
Author URI: http://www.favortt.com
*/

global $leizi_db_version,$wpdb;
$leizi_db_version = "1.0";

function leizi_install()
{
global $leizi_db_version,$wpdb;

$table_name = $wpdb->prefix."newtable";

$sql = "CREATE TABLE " . $table_name . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url VARCHAR(55) DEFAULT '' NOT NULL,
UNIQUE KEY id (id)
);";

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

dbDelta($sql);

add_option("leizi_db_version", $leizi_db_version);
}

register_activation_hook(__FILE__,'leizi_install'); 

//插件启用时激活leizi_install函数。

?>

这样一个简单的数据表创建就完成了,这里面比较麻烦的是编写SQL语句,不能出错,所以建议大家现在Phpmyadmin里面临时创建好你需要的数据表,点击执行的时候会出显示SQL代码,可以直接将那个代码贴过来使用,这样出错的几率会很小。数据表创建之后,我们还需要考虑如何插入数据,删除数据表,等这些操作。

插入数据很简单,需要使用WordPress相关的数据库函数。如:

function leizi_install_data()
{
global $wpdb;
$table_name = $wpdb->prefix."newtable";
$welcome_name = "磊子博客";
$welcome_text = "欢迎来到磊子博客!";

$rows_affected = $wpdb->insert($table_name,array( 'time' => current_time('mysql'), 'name' => $welcome_name, 'text' => $welcome_text ) );

}

register_activation_hook(__FILE__,'leizi_install_data');

删除数据表可以使用如下代码:

<?php
function pluginUninstall() {
  global $wpdb;
  $thetable = $wpdb->prefix."newtable";
  $wpdb->query("DROP TABLE IF EXISTS $thetable");
}
?>

基本都是使用的WordPress数据库相关函数来操作的,这个需要大家熟悉一下。可以浏览下磊子之前写的两篇文章 WordPress数据库接口分析之查询部分WordPress数据库接口分析之增改其他部分 我们在制作插件的时候,都会用到这些函数方法,大家在用的时候注意下。

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » WordPress插件制作教程(五): 创建新的数据表
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

13 条留言 其中:访客:10 条, 博主:3 条

  1. 唏哈说:

    我插入到数据库后,到数据库一看是乱码哦,这要怎么解决呢

    • 唏哈说:

      自己搞定了,原来是创建表格的时候没有指定编码,指定为utf-8就可以了

  2. JLee说:

    磊子,我之前也试过 创建数据库,然后尝试通过 global $wpdb 来 update 数据。但,貌似利用 ajax 传递数据时,似乎 $wpdb 不能使用,因而导致不能 update 数据等操作。之前在 Stack Exchange 上查找别人有没遇到过,果然也有人遇到类似的问题,就是:如果 $wpdb outside of wordpress, 它就不起作用 (stack exchange那里的人大概这么说)。之后,我就没在这个问题上深入去研究了。

    • 磊子说:

      global $wpdb 是WordPress内置的全局变量,如果在WordPress之外使用是不可以的!ajax传数据,通过$wpdb把数据获取过来!然后把数据通过ajax传数据可以的!是不是哪里出错了,你好好看下!

  3. 走过路过绝不错过

  4. choovin说:

    最近备案,根据国家规定,不能开启站点访问,所以我的网站最近20天不能访问,和你说下,呵呵

  5. 美剧说:

    这个主题好好看啊,请问博主这个主题那里下载的

  6. 指南者说:

    搜索到这儿来了,支持一下!
    呵呵,有空也来我这逛下呀

  7. mile说:

    好久没有来磊子这里了,过来看看 哈哈

  8. 叶酸说:

    方法很不错呀!学习中

  9. 商盟网说:

    过来看看,记得回防哦!

说点什么吧




订阅本站