站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
WordPress:Creating Tables with Plugins
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==创建数据库表格 == The first step in making your plugin create database tables automatically is to create a PHP function within your plugin that adds a table or tables to the WordPress MySQL database. For purposes of this article, we'll assume you want to call this function <tt>jal_install</tt>. 使得你的插件自动创建数据库表格,首先在插件内创建PHP函数,向WordPress MySQL数据库添加一个或者多个表格。鉴于本篇文章的目的,我们假定你称这个函数为<tt>jal_install</tt>。 === Database Table Prefix === === 数据库表格前缀=== In the <tt>wp-config.php</tt> file, a WordPress site owner can define a database table prefix. By default, the prefix is "wp_", but you'll need to check on the actual value and use it to define your database table name. This value is found in the <tt>$wpdb->prefix</tt> variable. (If you're developing for a version of WordPress older than 2.0, you'll need to use the <tt>$table_prefix</tt> global variable, which is deprecated in version 2.1). 在<tt>wp-config.php</tt>文件中,WordPress站点所有人可以定义数据库表格前缀。默认情况下,前缀是"wp_",但是你需要查看真正的参数值并且使用这个参数值定义你的数据库表格名称。可以在<tt>$wpdb->prefix</tt>变数中找到这个参数值的名称。(如果你为WordPress2.0之前的版本创建,你需要使用<tt>$table_prefix</tt>全局变数,这个变数在2.1版本时,已取消)。 So, if you want to create a table called <tt>(prefix)liveshoutbox</tt>, the first few lines of your table-creation function will be: 因此,如果你想要创建称为<tt>(prefix)liveshoutbox</tt>的表格,你创建表格的函数的前几行是: <pre> function jal_install () { global $wpdb; $table_name = $wpdb->prefix . "liveshoutbox"; </pre> <pre> function jal_install () { global $wpdb; $table_name = $wpdb->prefix . "liveshoutbox"; </pre> === Is the Table Already There? === ===表格已经存在吗? === The next step in creating the table is to see if the table has already been created. The following <tt>if</tt> statement runs a <tt>SHOW TABLES</tt> SQL query to try to find the table, and then compares the result to our table name: 其次,是要查看表格是否已经创建好了。下面的<tt>if</tt>声明运行<tt>SHOW TABLES</tt> SQL查询,尝试找到表格,然后将结果与我们的表格名称相比较: <pre> if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { </pre> <pre> if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { </pre> === Creating or Updating the Table === === 创建或者更新表格 === The next step is to actually create the database table. Rather than executing an SQL query directly, we'll use the <tt>dbDelta</tt> function in <tt>wp-admin/upgrade-functions.php</tt> (we'll have to load this file, as it is not loaded by default). The <tt>dbDelta</tt> function examines the current table structure, compares it to the desired table structure, and either adds or modifies the table as necessary, so it can be very handy for updates (see <tt>wp-admin/upgrade-schema.php</tt> for more examples of how to use <tt>dbDelta</tt>). Note that the <tt>dbDelta</tt> function is rather picky, however. For instance: 接着是要真正的创建数据库表格。不直接地执行SQL查询,我们在<tt>wp-admin/upgrade-functions.php</tt>中使用<tt>dbDelta</tt>函数(我们需要载入这个文件,因为默认不会载入这个文件)。<tt>dbDelta</tt>函数检查了当前表格结构,将这个结构与理想的表格结构相比较,添加或者更改表格,这样表格会便于更新(查看<tt>wp-admin/upgrade-schema.php</tt>,关于怎样使用<tt>dbDelta</tt>的更多的例子)。注意,<tt>dbDelta</tt>函数非常地特别,例如: * You have to put each field on its own line in your SQL statement. *你需要将每个栏放入你的SQL声明中各自的行中。 * You have to have two spaces between the words PRIMARY KEY and the definition of your primary key. *在单词PRIMARY KEY和你的primary key定义之间需要有两个空格。 * You must use the key word KEY rather than its synonym INDEX *你必须使用key word KEY而不是其近义词INDEX With those caveats, here are the next lines in our function, which will actually create or update the table. You'll need to substitute your own table structure in the <tt>$sql</tt> variable: 下面是我们的函数中的另外几行,会真正地创建或者更新表格。你需要在<tt>$sql</tt>变数中取代你自己的表格结构。 <pre> $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, time bigint(11) DEFAULT '0' NOT NULL, name tinytext NOT NULL, text text NOT NULL, url VARCHAR(55) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); </pre> <pre> $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, time bigint(11) DEFAULT '0' NOT NULL, name tinytext NOT NULL, text text NOT NULL, url VARCHAR(55) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); </pre> === Adding Initial Data === === 添加初始数据 === Finally, you may want to add some data to the table you just created. Here is an example of how to do that: 最后,你肯能需要为你刚刚创建的表格添加一些数据。下面是关于怎样操作的例子: <pre> $welcome_name = "Mr. Wordpress"; $welcome_text = "Congratulations, you just completed the installation!"; $insert = "INSERT INTO " . $table_name . " (time, name, text) " . "VALUES ('" . time() . "','" . $wpdb->escape($welcome_name) . "','" . $wpdb->escape($welcome_text) . "')"; $results = $wpdb->query( $insert ); </pre> <pre> $welcome_name = "Mr. Wordpress"; $welcome_text = "Congratulations, you just completed the installation!"; $insert = "INSERT INTO " . $table_name . " (time, name, text) " . "VALUES ('" . time() . "','" . $wpdb->escape($welcome_name) . "','" . $wpdb->escape($welcome_text) . "')"; $results = $wpdb->query( $insert ); </pre> '''NOTE:''' Even though we defined <tt>$welcome_name</tt> and <tt>$welcome_text</tt> in this function and know that there are no SQL special characters in them, it's still a good idea to always run a variable through the <tt>$wpdb->escape</tt> function before passing it to the database to prevent security problems and random bugs. '''注:'''即使我们在这个函数中定义了<tt>$welcome_name</tt> 和<tt>$welcome_text</tt>而且知道其中没有特别的SQL字符,通过<tt>$wpdb->escape</tt>函数运行变数,然后再将变数传递到数据库,仍然是个好注意,这样可以避免一些安全问题以及一些随意的程序错误。 === A Version Option === === 版本选项 === Another excellent idea is to add an option to record a version number for your database table structure, so you can use that information later if you need to update the table: 另一个好主意是,添加选项,记录你的数据库表格结构的版本数字,这样如果随后你需要更新表格,你可以使用这个信息: <pre> add_option("jal_db_version", "1.0"); </pre> <pre> add_option("jal_db_version", "1.0"); </pre> === The Whole Function === === 整个函数 === This function is done. Let's see it all in one piece. Note that the version number is now stored in a global variable. 这个函数完成了。让我们看看这个整体。注意版本数字现在储存在全局变数中。 <pre> $jal_db_version = "1.0"; function jal_install () { global $wpdb; global $jal_db_version; $table_name = $wpdb->prefix . "liveshoutbox"; if($wpdb->get_var("show tables like '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, time bigint(11) DEFAULT '0' NOT NULL, name tinytext NOT NULL, text text NOT NULL, url VARCHAR(55) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); $welcome_name = "Mr. Wordpress"; $welcome_text = "Congratulations, you just completed the installation!"; $insert = "INSERT INTO " . $table_name . " (time, name, text) " . "VALUES ('" . time() . "','" . $wpdb->escape($welcome_name) . "','" . $wpdb->escape($welcome_text) . "')"; $results = $wpdb->query( $insert ); add_option("jal_db_version", $jal_db_version); } } </pre> <pre> $jal_db_version = "1.0"; function jal_install () { global $wpdb; global $jal_db_version; $table_name = $wpdb->prefix . "liveshoutbox"; if($wpdb->get_var("show tables like '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, time bigint(11) DEFAULT '0' NOT NULL, name tinytext NOT NULL, text text NOT NULL, url VARCHAR(55) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); $welcome_name = "Mr. Wordpress"; $welcome_text = "Congratulations, you just completed the installation!"; $insert = "INSERT INTO " . $table_name . " (time, name, text) " . "VALUES ('" . time() . "','" . $wpdb->escape($welcome_name) . "','" . $wpdb->escape($welcome_text) . "')"; $results = $wpdb->query( $insert ); add_option("jal_db_version", $jal_db_version); } } </pre>
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)