上一篇教程中,我們新增了簡單的設定選項,資料的儲存我們是直接提交到 wp-admin/options.php 中的,對於資料的儲存我們還可以使用一個專用的函式 update_option(),準確的說這個函式是更新設定選項資料的。這一篇教程還是比較重要的,因為我們後面將的教程中,都是使用 update_option 這個函式來儲存、更新設定資料的。

函式用法如下:

  1. <?php   
  2. update_option( $option$newvalue );   
  3. //$option 為選項名稱   
  4. //newvalue 為選項的值   
  5. ?>  

例項:我們使用上一篇教程的程式碼,(前面我們已經在預設的 Twenty Ten 主題中新建一個 myfuntions.php , 然後在 functions.php 檔案中 include 新檔案),開啟 myfunctions.php 檔案,去掉三個隱藏表單,去掉表單的的提交地址,也就是 form 標籤中的 action 屬性,之後程式碼如下:

  1. <?php      
  2. function test_function(){   
  3.     add_theme_page( '阿樹工作室', '阿樹工作室', 'administrator', 'ashu_slug','display_function');   
  4. }   
  5. add_action('admin_menu', 'test_function');   
  6.   
  7. function display_function(){ ?>   
  8.     <form method="post" name="ashu_form" id="ashu_form">   
  9.     <h2> 阿樹工作室主題設定</h2>   
  10.     <p>   
  11.     <label>   
  12.     <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>   
  13.     請輸入文字   
  14.     </label>   
  15.     </p>   
  16.     <p class="submit">   
  17.         <input type="submit" name="option_save" value="<?php _e('儲存設定'); ?>" />   
  18.     </p>    
  19.     </form>   
  20.        
  21. <?php } ?>  

下面我們在檔案頂部再新增處理資料的程式碼:

  1. <?php   
  2. $option = get_option('ashu_copy_right');//獲取選項   
  3. if$option == '' ){   
  4.     //設定預設資料   
  5.     $option = '阿樹工作室';   
  6.     update_option('ashu_copy_right', $option);//更新選項   
  7. }   
  8. if(isset($_POST['option_save'])){   
  9.     //處理資料   
  10.     $option = stripslashes($_POST['ashu_copy_right']);   
  11.     update_option('ashu_copy_right', $option);//更新選項   
  12. }   
  13.   
  14. ?>  

注意:我們這裡的例子只有一個設定選項,如果表單中提交了多個資料,可將資料放進一個陣列中,這樣獲取資料的時候只需使用一次 get_option 函式即可,更新資料也只需要使用一次 update_option 函式,還有,這一篇文章的方法並不是可取的,如果你只有少量的資料,可以使用上一篇教程中的方法。

下面是 myfunctions.php 中的所有程式碼:

  1. <?php   
  2. $option = get_option('ashu_copy_right');//獲取選項   
  3. if$option == '' ){   
  4.     //設定預設資料   
  5.     $option = '預設資料';   
  6.     update_option('ashu_copy_right', $option);//更新選項   
  7. }   
  8. if(isset($_POST['option_save'])){   
  9.     //處理資料   
  10.     $option = stripslashes($_POST['ashu_copy_right']);   
  11.     update_option('ashu_copy_right', $option);//更新選項   
  12. }   
  13.   
  14. ?>   
  15.   
  16. <?php      
  17. function test_function(){   
  18.     add_theme_page( '阿樹工作室', '阿樹工作室', 'administrator', 'ashu_slug','display_function');   
  19. }   
  20. add_action('admin_menu', 'test_function');   
  21.   
  22. function display_function(){ ?>   
  23.     <form method="post" name="ashu_form" id="ashu_form">   
  24.     <h2> 阿樹工作室主題設定</h2>   
  25.     <p>   
  26.     <label>   
  27.     <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>   
  28.     請輸入文字   
  29.     </label>   
  30.     </p>   
  31.     <p class="submit">   
  32.         <input type="submit" name="option_save" value="<?php _e('儲存設定'); ?>" />   
  33.     </p>    
  34.     </form>   
  35.        
  36. <?php } ?>