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

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

sample_options
和sample_theme_options
都可以修改成你自己模板的名稱(chēng),如:名為是sky的模板,可以改成:
function theme_options_init(){
register_setting( 'sky_options', 'sky_theme_options', 'theme_options_validate' );}
注意:如果參數(shù)改名,后面的要一并更改過(guò)來(lái)!
function theme_options_add_page() {
add_theme_page( '主題選項(xiàng)', '主題選項(xiàng)', 'edit_theme_options', 'theme_options', 'theme_options_do_page' );}
add_theme_page函數(shù)在后臺(tái)“外觀”菜單項(xiàng)下面新建一個(gè)菜單項(xiàng):
add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);//page_titile-title標(biāo)簽的內(nèi)容//menu_title-顯示在后臺(tái)左邊菜單的標(biāo)題//capability-訪問(wèn)這個(gè)頁(yè)面需要的權(quán)限//menu_slug-別名,打開(kāi)訪問(wèn)的網(wǎng)址,需要獨(dú)一無(wú)二//function-執(zhí)行的函數(shù)
function theme_options_do_page() {}
后臺(tái)選項(xiàng)設(shè)置表單,分別是:文本框、選擇框、下拉框、單選按鈕、多行文本框,大家可以根據(jù)自己的需求增減,修改相關(guān)參數(shù)名稱(chēng),修改文本名稱(chēng)。
function theme_options_validate( $input ) {}
表單輸入過(guò)濾函數(shù),確保輸入數(shù)據(jù)的安全合法,這里的參數(shù)修改要對(duì)應(yīng)上面參數(shù)來(lái)修改。
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;
在數(shù)據(jù)庫(kù)中,sample_theme_options
字段保存的數(shù)據(jù)是以數(shù)組的形式儲(chǔ)存,這是我們調(diào)用數(shù)據(jù)的方法:
<?php
$options = get_option('sample_theme_options');
echo $options['sometext'];
?>
qw_get_option
函數(shù)是我額外添加的函數(shù)(源代碼里并沒(méi)有),主要為了更容易主題調(diào)用參數(shù),調(diào)用方法:
<?php echo qw_get_option('sometext');?>
經(jīng)驗(yàn):
我使用這款框架開(kāi)發(fā)了一款插件,其中比較突出的內(nèi)容在這篇文章中有講解: