WordPress 教程:為插件自定義數(shù)據(jù)表_網(wǎng)頁設(shè)計(jì)教程

      編輯Tag賺U幣

      推薦:如何使用查找我的iPhone教程
      手機(jī)丟了第一步就是要先定位,這個(gè)就不用說了,如果你還沒有開啟定位功能趕緊回去開吧,就算不是被偷也有可能找不到的,開啟后又電腦和賬號(hào)就能定位了,今天帶大家一起來看

      當(dāng)你寫插件的時(shí)候,你可能需要寫東西到數(shù)據(jù)庫中去,一般來說,有兩種數(shù)據(jù)要存儲(chǔ),第一種是安裝數(shù)據(jù),一般存儲(chǔ)在 wp_options 表中,使用 WordPress 的 options 機(jī)制來實(shí)現(xiàn)。第二種是數(shù)據(jù),可以存儲(chǔ)到 postmeta 表或者 usermeta 表中。如果數(shù)據(jù)特別多,就需要單獨(dú)創(chuàng)建數(shù)據(jù)表了。這篇文章就講講如何在寫插件時(shí)候創(chuàng)建數(shù)據(jù)表。

      一般在寫插件時(shí)候創(chuàng)建數(shù)據(jù)庫有如下三個(gè)步驟:

      1. 創(chuàng)建一個(gè)添加新數(shù)據(jù)表的 PHP 函數(shù)。

      2. 保證插件啟動(dòng)的時(shí)候調(diào)用這個(gè)函數(shù)。

      3. 如果新版本有不同的數(shù)據(jù)表結(jié)構(gòu),創(chuàng)建一個(gè)升級(jí)函數(shù)。

      今天我就以微信機(jī)器人 WordPress 插件高級(jí)版的 新功能:自定義文本回復(fù),來講解下這個(gè)過程,其中的第三步,由于沒有數(shù)據(jù)庫的升級(jí)不涉及。

      創(chuàng)建一個(gè)添加新數(shù)據(jù)表的 PHP 函數(shù)

      我們這個(gè)插件的安裝函數(shù)叫做:weixin_robot_texts_crate_table

      1. 數(shù)據(jù)庫表前綴

      默認(rèn) WordPress 數(shù)據(jù)庫標(biāo)簽前綴都是 wp_,但是有人如果在一個(gè)數(shù)據(jù)庫安裝兩個(gè)及以上 WordPress,就需要在 wp-config.php設(shè)置 WordPress 數(shù)據(jù)庫表前綴來區(qū)別,所以我們向 WordPress 數(shù)據(jù)庫添加新表的時(shí)候,要先找找到數(shù)據(jù)庫表前綴。我們可以在變量 $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. 創(chuàng)建數(shù)據(jù)表

      這步就是實(shí)際來創(chuàng)建一個(gè)數(shù)據(jù)表了。我們這個(gè)表有5個(gè)字段,id 自定義文本回復(fù)的 ID。keyword 微信發(fā)送過來的關(guān)鍵字,reply 自定義回復(fù),time 添加的時(shí)間,status是否啟用,有時(shí)候只是不想暫時(shí)不想啟用,而不是刪除。

      這里我不用直接的 SQL 查詢來創(chuàng)建,而是使用在 wp-admin/upgrade-functions.php(我們需要加載該文件,默認(rèn)是不會(huì)加載的)中的 dbDeltadbDelta 函數(shù)會(huì)檢查當(dāng)前的表結(jié)構(gòu),和需要的表結(jié)構(gòu)進(jìn)行比較,所以無論添加或者修改表都會(huì)非常方便。關(guān)于具體怎樣使用 dbDelta,詳細(xì)可以看 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');

      最后這個(gè) weixin_robot_texts_crate_table 函數(shù)為:

          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); }}

      保證插件啟動(dòng)的時(shí)候調(diào)用創(chuàng)建數(shù)據(jù)表函數(shù)

      我們使用 register_activation_hook 調(diào)用上面創(chuàng)建數(shù)據(jù)表的函數(shù)。

          register_activation_hook( __FILE__,'weixin_robot_texts_crate_table');

      分享:微信公眾平臺(tái)教程(二) 消息管理與群發(fā)
      這部分主要講解微信公眾平臺(tái)的消息管理技巧和群發(fā)注意事項(xiàng),我會(huì)結(jié)合一些營銷要數(shù)加入到本篇教程里面,希望能幫助大家在營銷和使用上更加得心應(yīng)手。如果對(duì)本篇教程有任何疑

      來源:模板無憂//所屬分類:網(wǎng)頁設(shè)計(jì)教程/更新時(shí)間:2013-04-23
      相關(guān)網(wǎng)頁設(shè)計(jì)教程