前面我們知道了怎樣在 WordPress 後台添加一個設置頁面,有了設置頁面,我們只需要在這個頁面添加上設置表單,然後保存數據即可。這篇教程我們以實例來講述怎樣添加一個設置選項。
同樣的我們還是使用默認主題 Twenty Ten 來作測試,(前面我們已經在默認的 Twenty Ten 主題中新建一個 myfuntions.php , 然後在 functions.php 文件中 include 新文件) 。
一、製作表單用編輯器打開 myfunctions.php 文件,清空裏面的代碼,重新寫。先新建一個後台設置頁面,代碼如下:
- <?php
- function test_function(){
- add_theme_page( '阿樹工作室', '阿樹工作室', 'administrator', 'ashu_slug','display_function');
- }
- add_action('admin_menu', 'test_function');
- function display_function(){ ?>
- <form method="post" name="ashu_form" id="ashu_form">
- <h2> 阿樹工作室主題設置</h2>
- <p>
- <label>
- <input name="ashu_copy_right" size="40" />
- 請輸入文字
- </label>
- </p>
- <p class="submit">
- <input type="submit" name="option_save" value="<?php _e('保存設置'); ?>" />
- </p>
- </form>
- <?php } ?>
上面的代碼在後台 「外觀」 菜單下新加一個子菜單項,輸出了一個只有一個文本輸入框的表單。保存之後,後台效果如圖:

現在已經完成第一步,製作表單,我們還需要在表單中顯示上次設置的額數據,以及還有提交數據後處理數據、保存數據的代碼。
二、處理保存數據
其實這些也很簡單,WordPress 有提供更新、保存等 API 。所以我們將將數據直接提交到 options.php 即可,wp-admin/options.php 文件為設置選項管理界面,裏面還有數據處理 API,如果你直接訪問這個文件,可以得到所有設置選項,比如在我本地直接訪問 http://localhost/newtheme/wp-admin/options.php 即可。你也可以使用手動的方法來保存數據,請參考下一篇教程:數據的保存
在官網的介紹頁面中: 還是用了 register_setting 、 settings_fields 和 do_settings 三個函數,然而實際上現在已經沒有 do_settings 這個函數了。使用簽名兩個函數也很繁瑣,將這兩個函數輸出的內容直接寫出來即可。
首先添加 wp_nonce_field 函數,該函數輸出兩個隱藏域,用來驗證表單來源,其次再手動輸入兩個隱藏域。如下:
- <!--new code-->
- <?php wp_nonce_field('update-options'); ?>
- <input type="hidden" name="action" value="update" />
- <input type="hidden" name="page_options" value="ashu_copy_right" />
- <!--new code-->
第一個函數用來輸出更新設置選項時的驗證數據,第二個隱藏域也固定不變,第三個隱藏域,value 的值為前面表單的值,比如我們前面只有一個文本輸入框 ashu_copy_right,所以這裏的 value 值就一個,如果我們有很多個文本輸入框,比如 input1 、 input2 、 input3 這裏的 value 值應該三個都寫上,並且用逗號隔開: value="input1,input2,input3"。在 optinos 保存設置數據的時候就根據這個隱藏域中的值來保存。
添加上面代碼後,我們後台查看錶單源碼即可看到輸出的幾個隱藏域:
- <form method="post" name="ashu_form" id="ashu_form" action="options.php">
- <h2>阿樹工作室主題設置</h2>
- <p>
- <label>
- <input name="ashu_copy_right" size="40" value="">
- 請輸入文字
- </label>
- </p>
- <input type="hidden" id="_wpnonce" name="_wpnonce" value="a34ef763fa">
- <input type="hidden" name="_wp_http_referer" value="/newtheme/wp-admin/themes.php?page=ashu_slug&settings-updated=true">
- <input type="hidden" name="action" value="update">
- <input type="hidden" name="page_options" value="ashu_copy_right">
- <p class="submit">
- <input type="submit" name="option_save" value="保存設置">
- </p>
- </form>
三、顯示以前的設置數據
這一步很重要也很簡單,要在文本輸入框中顯示上次設置的數據,只需要獲取相應的選項即可,獲取選項使用:get_option 函數,這個函數有兩個參數:
- <?php
- get_option( $option, $default );
- //option--選項名稱
- //default--沒有數據是的默認數據
- ?>
將我們的文本輸入框代碼改成:
- <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>
即可。
到此,myfunctions.php 的完整代碼應該是:
- <?php
- function test_function(){
- add_theme_page( '阿樹工作室', '阿樹工作室', 'administrator', 'ashu_slug','display_function');
- }
- add_action('admin_menu', 'test_function');
- function display_function(){ ?>
- <form method="post" name="ashu_form" id="ashu_form" action="options.php">
- <h2> 阿樹工作室主題設置</h2>
- <p>
- <label>
- <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>
- 請輸入文字
- </label>
- </p>
- <?php wp_nonce_field('update-options'); ?>
- <input type="hidden" name="action" value="update" />
- <input type="hidden" name="page_options" value="ashu_copy_right" />
- <p class="submit">
- <input type="submit" name="option_save" value="<?php _e('保存設置'); ?>" />
- </p>
- </form>
- <?php } ?>
四:輸出選項值
例:打開 twenty ten 主題的 footer.php 文件,在適當的位置添加代碼:
- <?php echo get_option('ashu_copy_right'); ?>
效果 (點擊圖片放大):
