本页目录
在制作 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');?>经验:
我使用这款框架开发了一款插件,其中比较突出的内容在这篇文章中有讲解:
