WordPress插件制作教程(四): 將數據保存到數據庫


上一篇講解了添加菜單的方法,這一篇為大家講解如何將數據保存到數據庫中,並且顯示在頁面上,不會因提交表單時刷新頁面輸入框中內容消失。要實現這一功能我們需要借助WordPress函數來實現,下面就來講解具體的實現方法,先把代碼貼出來。還是根據之前的那個插件樣例,大家可以直接在上面做修改。

 

// 在WordPress后台評論處添加一個子菜單
add_action('admin_menu', 'comments_submenu');
function comments_submenu() {
    add_comments_page(__('數據保存'), __('數據保存'), 'read', 'my-unique-identifier-datasave', 'add_comments_submenu');
}

// WordPress后台評論處菜單page
function add_comments_submenu(){
   if($_POST['test_hidden'] == 'y') {
       update_option('test_input_c',$_POST['test_insert_options']); //更新你添加的數據庫
?>
     <div id="message" style="background-color: green; color: #ffffff;">保存成功 !</div>
<?php
   }
?>
  <div>
      <?php screen_icon(); //顯示圖標  ?>
      <h2>添加數據</h2>
      <form action="" method="post" id="my_plugin_test_form">
          <h3>
              <label for="test_insert_options">輸入測試數據:</label>
              <input type="text" id="test_insert_options" name="test_insert_options" value="<?php  echo esc_attr(get_option('test_input_c')); ?>"  />
          </h3>
          <p>
              <input type="submit" name="submit" value="保存" class="button button-primary" />
              <input type="hidden" name="test_hidden" value="y"  />
          </p>
      </form>
  </div>
<?php
}

// 通過get_option()來顯示存在數據庫中的信息。
// 以上填寫的信息都存在了數據庫中的wp_options表里面。

上面簡短的代碼就實現了數據保存並顯示的功能,通過這個功能我們就可以延伸到其他的方法或者功能上面。比如一些不錯的主題都帶有主題設置,里面的一些顯示和存儲都可以用上面的方法來實現,大家可以多多去嘗試下。

 

2. 創建自定義插件設置菜單,實現options表的字段的更新設置:如圖

<?php
// 創建自定義插件設置菜單
add_action('admin_menu', 'baw_create_menu');
function baw_create_menu() {
    // 創建新的頂級菜單
    add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page', '');
    // 調用注冊設置函數
    add_action( 'admin_init', 'register_mysettings' );
}

function register_mysettings() {
    // 注冊我們的設置
    register_setting( 'baw-settings-group', 'new_option_name' );
    register_setting( 'baw-settings-group', 'some_other_option' );
    register_setting( 'baw-settings-group', 'option_etc' );
}

function baw_settings_page() {
?>
<div class="wrap">
<h2>你的插件名稱</h2>

<form method="post" action="options.php">
    <?php settings_fields( 'baw-settings-group' ); // 設置字段 這個函數取代了 nonce magic, action field, and page_options ?>
    <?php do_settings_sections( 'baw-settings-group' ); // 這個函數取代了表單字段標記形式本身 ?>
    <table class="form-table">
        <tr valign="top">
        <th scope="row">New Option Name</th>
        <td><input type="text" name="new_option_name" value="<?php echo esc_attr( get_option('new_option_name') ); ?>" /></td>
        </tr>
         
        <tr valign="top">
        <th scope="row">Some Other Option</th>
        <td><input type="text" name="some_other_option" value="<?php echo esc_attr( get_option('some_other_option') ); ?>" /></td>
        </tr>
        
        <tr valign="top">
        <th scope="row">Options, Etc.</th>
        <td><input type="text" name="option_etc" value="<?php echo esc_attr( get_option('option_etc') ); ?>" /></td>
        </tr>
    </table>
    <?php submit_button(); ?>
</form>
</div>
<?php }?>

 

WordPress 選項機制

參閱Creating Options Pages,你將學會如何去創建一個自動保存選項數據的頁面。

WordPress有一個"選項"機制,用於保存、更新以及檢索那些獨立的,具有特定名稱的數據。選項的值可以是字符串、數組,甚至是PHP對象(當然,PHP對象在保存時必須能夠被序列化或轉換成字符串,檢索的時候也必須能夠被反序列化)。選項的名稱必須是字符串,且必須是唯一的,這樣才能夠確保它們不會和WoredPress或其它插件產生沖突。

通常情況下,你最好能夠對插件選項的數量進行一下精簡。例如,如果你有10個不同名稱的選項需要保存到數據庫中,那么,你就可以考慮將這10個數據作為一個數組,並保存到數據庫的同一個選項中。

以下是讓你的插件使用選項機制的主要函數:

add_option($name, $value, $deprecated, $autoload); // 官方文檔: http://codex.wordpress.org/Function_Reference/add_option
// 創建一個新的選項並保存到數據庫中,若選項已存在,則不進行任何操作。
// $name 必要參數(string)。要創建的選項的名稱。
// $value 可選參數(string)。要創建的選項的值。默認值為空字符串。
// $deprecated 可選參數(string)。該選項是否已經過期。若需要讓后面的$autoload參數生效,則該參數必須傳入空字符串或null。
// $autoload 可選參數(enum: 'yes' or 'no')。是否自動加載該選項。若設置為 'yes',則該選項會被get_alloptions 函數自動檢索到。默認值為 'yes'。
 delete_option($option); // 官方文檔: http://codex.wordpress.org/Function_Reference/delete_option
// $option 必要參數(string) 選擇要刪除的選項的名稱。有效的默認選項的列表可以在Option Reference選擇參考。
 update_option($option_name, $newvalue); // 官方文檔: http://codex.wordpress.org/Function_Reference/update_option
// 更新數據庫中的選項值,若選項不存在,則創建該選項。
// (注意:如果你用不到$deprecated和$autoload參數的話,那么大可不必使用add_option函數)。
// $option_name 必要參數(string)。要更新/創建的選項名稱。
// $newvalue 必要參數(string|array|object)。要更新/創建的選項的值。
 get_option($option); // 官方文檔: http://codex.wordpress.org/Function_Reference/get_option
// 從數據庫中獲取指定選項的值。
// $option 必要參數(string)。選項的名稱。你可以在Option Reference中找到與WordPress一同安裝的默認選項列表。
"admin_email"——博客管理員的電子郵件地址。
"blogname"——博客標題,一般設置選項。
"blogdescription"——為你的博客標語;一般設置選項。
為你的博客"blog_charset"——字符編碼;設置在閱讀選項。
"date_format"——默認日期格式,一般設置選項。
"default_category"——默認文章類別;書面設置選項。
"home"——博客的網址,一般設置選項。
中的"siteurl"——WordPress網站地址,一般設置選項。
    警告:這不是一樣get_bloginfo(中的"siteurl")(將返回主頁url),但隨着get_bloginfo("wpurl")。
"template"——當前主題的名字,表示。
"start_of_week"——天星期日歷應該開始,一般設置選項。
"upload_path"——默認上傳位置;設置在雜項選項。
"posts_per_page"——最大數量的帖子顯示在頁面上,設置在閱讀選項。
"posts_per_rss"——最大數量的最近的帖子顯示聚合提要;設置在閱讀選項。
可以有更多的選擇,這取決於你有什么插件安裝。訪問/ wp-admin /選項。php頁面的完整列表。
強調獨立的單詞,小寫字母只有——這將是在數據庫中。
 

 

本章總結:

1. 本章主要介紹add_option()、delete_option()、 update_option(),、get_option() 四個函數的方法

2. 官方文檔 參考:https://codex.wordpress.org/Function_Reference

Options

 

 

 

下一章我們繼續講解:創建新的數據表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM