在制作wordpress主題時總需要在后臺設置一些主題選項留給使用者來自定義,有時候我們也需要在后臺增加一些簡單功能設置,這時候我們應該如何做呢?
一般來說有兩種方案:
- 使用WordPress的Settings API。要求的編程能力強,熟悉php;
- 使用現成的主題選項框架:如Options Framework Theme。要求起碼能懂PHP代碼,要熟悉和理解使用的主題框架。
我打算為主題添加一個全站的SEO功能,需要設置一些簡單的選項,這兩種方案在我看來都不太合適的。第一種太難了,PHP小白的我果斷放棄了;第二種還可以考慮,但是我需要的功能只是幾個文本框和選擇框就能實現,用主題框架就顯得塊頭太大,臃腫,殺雞用牛刀了,而且我還不熟悉這個框架,還需要花時間學習和實踐,所以并非一個好選擇。
最理想就是有一個簡單的主題后臺選項的模板,有幾個核心的功能選項,如:文本框,多行文本框、選擇框、下拉框、單選按鈕,我可以直接修改套用,不需要熟悉PHP,也不需要看使用說明。那么有沒有這種簡單的后臺選項模板呢?我還真找到的一個:
我自己修改了一下代碼,前臺文字改成了中文 》更方便理解,增加了一個調用函數 》更方便options數據的調用,代碼在文章末尾可以下載。后臺實現的效果如下:

如何使用這個主題后臺選項模板
1、把theme-options.php文件放到主題根目錄;
2、在主題functions.php文件添加:
require_once ( get_template_directory() . '/theme-options.php' );
如果是子主題則改成:
require_once ( get_stylesheet_directory() . '/theme-options.php' );
3、根據的自己需求修改模板中的文本,參數;
4、主題調用參數:
<?php echo qw_get_option('sometext');?>
模板中一些代碼說明
add_action( 'admin_init', 'theme_options_init' );
add_action( 'admin_menu', 'theme_options_add_page' );
動作鉤子
function theme_options_init(){
register_setting( 'sample_options', 'sample_theme_options', 'theme_options_validate' );}
register_setting
注冊wp_options
字段函數,sample_options
為注冊字段所屬的分組(group),sample_theme_options
為注冊字段名稱。在數據庫wp_options
表中可以看到:

sample_options
和sample_theme_options
都可以修改成你自己模板的名稱,如:名為是sky的模板,可以改成:
function theme_options_init(){
register_setting( 'sky_options', 'sky_theme_options', 'theme_options_validate' );}
注意:如果參數改名,后面的要一并更改過來!
function theme_options_add_page() {
add_theme_page( '主題選項', '主題選項', 'edit_theme_options', 'theme_options', 'theme_options_do_page' );}
add_theme_page函數在后臺“外觀”菜單項下面新建一個菜單項:
add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);//page_titile-title標簽的內容//menu_title-顯示在后臺左邊菜單的標題//capability-訪問這個頁面需要的權限//menu_slug-別名,打開訪問的網址,需要獨一無二//function-執行的函數
function theme_options_do_page() {}
后臺選項設置表單,分別是:文本框、選擇框、下拉框、單選按鈕、多行文本框,大家可以根據自己的需求增減,修改相關參數名稱,修改文本名稱。
function theme_options_validate( $input ) {}
表單輸入過濾函數,確保輸入數據的安全合法,這里的參數修改要對應上面參數來修改。
if ( ! function_exists( 'qw_get_option' ) ) :function qw_get_option( $name, $default = false ) {
$options = get_option( 'sample_theme_options' );if ( isset( $options[$name] ) ) {return $options[$name];}return $default;}
endif;
在數據庫中,sample_theme_options
字段保存的數據是以數組的形式儲存,這是我們調用數據的方法:
<?php
$options = get_option('sample_theme_options');
echo $options['sometext'];
?>
qw_get_option
函數是我額外添加的函數(源代碼里并沒有),主要為了更容易主題調用參數,調用方法:
<?php echo qw_get_option('sometext');?>
經驗:
我使用這款框架開發了一款插件,其中比較突出的內容在這篇文章中有講解:
對于主題的設置,有了更多的選擇 ?酷酷的?