SEO只是外表
技术才是我的追求

wordpress主题后台添加设置选项的简单模板

在制作wordpress主题时总需要在后台设置一些主题选项留给使用者来自定义,有时候我们也需要在后台增加一些简单功能设置,这时候我们应该如何做呢?

一般来说有两种方案:

  1. 使用WordPress的Settings API。要求的编程能力强,熟悉php;
  2. 使用现成的主题选项框架:如Options Framework Theme。要求起码能懂PHP代码,要熟悉和理解使用的主题框架。

我打算为主题添加一个全站的SEO功能,需要设置一些简单的选项,这两种方案在我看来都不太合适的。第一种太难了,PHP小白的我果断放弃了;第二种还可以考虑,但是我需要的功能只是几个文本框和选择框就能实现,用主题框架就显得块头太大,臃肿,杀鸡用牛刀了,而且我还不熟悉这个框架,还需要花时间学习和实践,所以并非一个好选择。

最理想就是有一个简单的主题后台选项的模板,有几个核心的功能选项,如:文本框,多行文本框、选择框、下拉框、单选按钮,我可以直接修改套用,不需要熟悉PHP,也不需要看使用说明。那么有没有这种简单的后台选项模板呢?我还真找到的一个:

https://themeshaper.com/2010/06/03/sample-theme-options/

我自己修改了一下代码,前台文字改成了中文 》更方便理解,增加了一个调用函数 》更方便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_optionssample_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');?>

 

wordpress主题后台选项模板源码下载

原版源码:theme-options

博主修改过源码:theme-options-cn

wordpress主题后台选项模板补充

本篇文章内容只针对特定人群,大神举手可以做到,可以忽略;纯小白看不懂也用不上,可以跳过;如果你正好用得上,说明你是wordpress折腾大军的其中一员了。还是那句“ wordpress虐我千百遍,我待wordpress如初恋!”

这就是我折腾成果:

未经允许不得转载:棋哥SEO博客 » wordpress主题后台添加设置选项的简单模板

分享到:更多 ()

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    对于第一个方案,我做了一个简单的使用教程,需要的可以来看看。

    wordpress添加原生设置选项

    牧泽1年前 (2019-01-13)回复