想必不少朋友都看到了萬戈的《為 WordPress 插件添加後臺控制選項》, 那麼, 如何給主題添加後臺選項呢?
下面以為主題添加“公告”功能為例進行講解, 其他項目類似.
後臺處理:
首先, 我們要修改 function.php, Kinosang’s Labs的處理包括 3 大塊: 獲取選項, 初始化, 標籤頁操作界面. Kinosang在這裏只創建一個公告欄, 包括兩個選項 (是否顯示公告欄和公告欄內容).如果要添加更多選項, 也只需要代碼中 3 個 TODO 的位置上追加一些代碼而已.當然, 你還需要改一下選項名稱, 將 Classic的相關內容全部換掉.
Kinosang已經在代碼中標註了大量註釋, 下面看看代碼吧.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| /** * 選項組類型 */ class ClassicOptions { /* -- 獲取選項組 -- */ function getOptions() { // 在數據庫中獲取選項組 $ options = get_option('classic_options'); // 如果數據庫中不存在該選項組, 設定這些選項的默認值, 並將它們插入數據庫 if (!is_array($ options)) { $ options['notice'] = false; $ options['notice_content'] = ''; // TODO: 在這裏追加其他選項 update_option('classic_options', $ options); } // 返回選項組 return $ options; }
/* -- 初始化 -- */ function init() { // 如果是 POST 提交數據, 對數據進行限制, 並更新到數據庫 if(isset($ _POST['classic_save'])) { // 獲取選項組, 因為有可能只修改部分選項, 所以先整個拿下來再進行更改 $ options = ClassicOptions::getOptions();
// 數據限制 if ($ _POST['notice']) { $ options['notice'] = (bool)true; } else { $ options['notice'] = (bool)false; } $ options['notice_content'] = stripslashes($ _POST['notice_content']);
// TODO: 在這追加其他選項的限制處理
// 更新數據 update_option('classic_options', $ options);
// 否則, 重新獲取選項組, 也就是對數據進行初始化 } else { ClassicOptions::getOptions(); }
// 在後臺 Design 頁面追加一個標籤頁, 叫 Current Theme Options add_theme_page("Current Theme Options", "Current Theme Options", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display')); }
/* -- 標籤頁 -- */ function display() { $ options = ClassicOptions::getOptions(); ?> <form id="classic_form" action="#" enctype="multipart/form-data" method="post" name="classic_form"> <div>
##
<!-- 公告欄 --> <label> <input type="checkbox" checked="checked" name="notice" value="checkbox" /> /> <?php _e('Show notice.', 'classic'); ?> </label><label> <textarea id="notice_content" style="width: 98%; font-size: 12px;" cols="50" name="notice_content" rows="10"><;?php echo($ options['notice_content']); ?></textarea> </label> <table> <tbody> <tr valign="top"> <th scope="row"><?php _e('Notice', 'classic'); ?> <small style="font-weight: normal;"><?php _e('HTML enabled', 'classic') ?></small></th> <!-- 是否顯示公告欄 --> <!-- 公告欄內容 --></tr> </tbody> </table> <!-- TODO: 在這裏追加其他選項內容 --> <!-- 提交按鈕 --> <input type="submit" name="classic_save" value="<?php _e('Update Options »', 'classic'); ?>" />
</div> </form>
|
前臺處理:
要公告欄在首頁上顯示, 需要修改一下 index.php, 這個比較簡單, 只是通過一些判斷語句決定東西要不要顯示出來而已.當然, 你可以進行其他操作, 關鍵是獲取到選項的值, 並對它們進行處理.
其實可以分為兩步:
1. 獲取選項 (對每個 PHP 文件, 獲取一次就行了, 可以在文件頂部執行)
2. 對選項進行處理 (這裏判斷成立的話就將公告內容顯示出來)
1 2 3 4 5 6
| <!-- 獲取選項 --> <?php $ options = get_option('classic_options'); ?>
<!-- 如果用戶選擇顯示公告欄, 並且公告欄有內容, 則顯示出來 --> <?php if($ options['notice'] && $ options['notice_content']) : ?> <div id="notice"></div>
|
好了, 這個教程就到這裏了.