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. 商盟网说:

    过来看看,记得回防哦!

说点什么吧




wireless earbuds moscow mule mugs bluetooth speakers waterproof camera best wireless earbuds best vacuum cleaner best drugstore foundation best dishwasher best waist trainer wireless headphones best vacuum 0594918 best bluetooth earbuds waterproof bluetooth speaker tattoo cover up action camera
订阅本站