中易网

如何构建WordPress主题选项 Theme Options

答案:2  悬赏:60  
解决时间 2021-02-19 20:23
如何构建WordPress主题选项 Theme Options
最佳答案
用WordPress的Settings API是最精简的方法,定制化最高,对编程要求也高。
用Options Framework Theme是最简单的方法,不需要知道什么编程技巧,装上了就可以用,很像傻瓜照相机,所以也不能对定制化和性能有过高期望。
用主题框架,前提用这个框架构建主题,很多优秀的框架开源却不免费。
易用性和性能的平衡
如果既要追求易用性又要追求性能,需要了解一些代码又不用玩命读文档,那还有一个不错的选择,该方法来自这里。
首先下载示例文件,该文件是twentyten的Child Theme,安装方法参考如何安装WordPress主题。
激活主题后,在外观选项看下就会出现Theme Options选项卡。

这个主题选项页面主要是又文件夹下的theme-options.php控制的,打开这个文件看看如何通过修改文件来定制我们需要的主题选项界面。
如何使用theme-options.php
1. 引入文件
将theme-options.php放到主题目录下,通过下面代码引入
require_once ( get_template_directory() . '/theme-options.php' );

如果是Child Theme
require_once ( get_stylesheet_directory() . '/theme-options.php' );

2. 修改textdomain
WordPress的多语言主题必须有textdomain,这个示例文件中的textdomain是sampletheme,全文替换成自己主题的textdomain即可。
3. 修改外观选项卡下的Theme Options菜单名称
13-18行的代码用于产生Theme Options名称

function theme_options_add_page() {
add_theme_page( __( 'Theme Options', 'sampletheme' ), __( 'Theme Options', 'sampletheme' ), 'edit_theme_options', 'theme_options', 'theme_options_do_page' );
}

使用的函数是add_theme_page,函数定义如下,根据定义修改
add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);

$page_title控制页面title,$menu_title控制菜单名称
4. 生成选项
select下拉菜单和radio单选按钮通过定义数组产生,分别是$select_options和$radio_options。
select、radio、input或checkbox等HTML结构均在函数theme_options_do_page()中输出。
5. 调用主题选项中的项目

$options是一个数组,输出主题选项页面所有的选项,以安装后默认的选项为例,$options的内容如下
Array
(
[sometext] =>
[selectinput] => 0
[sometextarea] =>
[option1] => 0
[radioinput] =>
)

6. 更改存储在wp_options表中的主题选项名称
如果你不想用sample_options作为选项名称,可以修改成自己主题的名字,假设你的主题叫greattheme,将下面的代码

function theme_options_init(){
register_setting( 'sample_options', 'sample_theme_options', 'theme_options_validate' );
}

替换为
function theme_options_init(){
register_setting( 'greattheme_options', 'great_theme_options', 'theme_options_validate' );
}

进行全文替换,将sample_options全文替换为greattheme_options,将some_theme_options全部替换为great_theme_options。
register_setting是WordPress Settings API中的一个函数,用来注册选项并通过回调函数(callback)输出HTML结构,函数原型如下
register_setting( $option_group, $option_name, $sanitize_callback );
全部回答
throw mine in the mix, but i don\'t like to do comparison selling too hard but here\'s a link to the blogsense wso. good luck!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机安装百度云屏幕发烫
心好烦,我是一名初中生最近老是跟父母吵架我
slr 4跟美利达哪个型号接近
小攻是系统的主受文
别れ际,もっと好きになるmv讲什么意思
试声明一个无符号整型变量a与一个双精度变量b
3米5毫米+15毫米等于多少毫米
谁知道社保资料丢了要怎样补办
word 制表和excel制表哪个好?有什么区别?
四块钢板焊成一个铁筐 里面四面各焊3个小挂钩
百姓家宴地址有知道的么?有点事想过去
如何提升企业微博的影响力
剑网3战宝十六罗汉杀了会刷吗?
游戏全民超神是中国的谁开发的
招标文件中的废标因素有哪些,招标人可以自行
推荐资讯
吴窑镇中心幼儿园这个地址在什么地方,我要处
男人是不是一般都喜欢娶漂亮的女的做老婆
怎么查谁进过我的空间
瑞杰奇瑞直营店怎么去啊,我要去那办事
酵素的原液喝完了还可以加水吗
设f(x)是定义在R上的奇函数,且y=f(x)的图象关
我想在油管中间加一个压力传感器,传感器是外
我家供出马仙四个供碗十二只香好不好
五年级下册数学练习册7cm=()dm,25分=()时,45
用html制作表格 怎样在背景图片上添加文本框
《天朝田亩制度》具有绝对平均主义性质,因为
条件有限,平时很少有机会吃到新鲜蔬菜怎么办?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?