Option Framework 框架的三个自定义技巧
陆陆续续将解密一些本站几个收费主题的核心功能,分享才会更好。虽然鄙人技术不称得上牛逼,好在足够专注也能学点。Option Framework 框架免费开源,采用GPL(意味着你可以用于收费项目中),用来开发主题中是再好不过的东西了。
关于Option Framework 框架,如果你之前没有了解过的,不妨通过下面这篇文章了解《5 款前沿的WordPress主题后台选项开发框架推荐》。很欣慰看到国内的WP开发者越来越多用上了这个框架而非像前几年那样抄来抄去某个代码段。本文例子所用的Option Framework 版本为最新版(写作本文时候为1.9)
自定义一:自定义设置函数名称
默认的话,Option Framework 的设置调用函数名称为 of_get_option()
,如果你想自定义为其他,需要对源代码本身修改了——打开options-framework.php 这个文件,定位到最后一个定义函数的地方,将of_get_option
改为你需要的,比如:
if ( ! function_exists( 'mindia_option' ) ) : function mindia_option( $name, $default = false ) { $config = get_option( 'optionsframework' ); if ( ! isset( $config['id'] ) ) { return $default; } $options = get_option( $config['id'] ); if ( isset( $options[$name] ) ) { return $options[$name]; } return $default; } |
---|
就可以实现函数名称为mindia_option
。
自定义二:自定义设置页面标题、别名
默认的话,地址栏里面的设置页面别名(URL)类似于wp-admin/themes.php?page=options-framework。如果你控制欲犯了,想设置为其他,那么可以用下面的代码实现之:
function prefix_options_menu_filter( $menu ) { $menu['mode'] = 'menu'; $menu['page_title'] = 'Mindia 主题设置'; $menu['menu_title'] = 'Mindia 主题设置'; $menu['menu_slug'] = 'mindia-options'; return $menu; } add_filter( 'optionsframework_menu', 'prefix_options_menu_filter' ); |
---|
自定义三:让主题设置的文本内容允许javascript代码
不知道从哪个版本开始,为了安全,Option Framework 框架默认的话会过滤掉js代码,因此如果你需要在设置里面做设置的话可能会遇到直接输出js代码的问题,解决这个的话jeff 目前使用这个方法:即在输出前自动添加javascript 标签,然后在设置页面要求用户不用输入javascript 标签。这样算是比较好的解决了这个问题。
function mindia_footer_code(){ echo "<script type='text/javascript'>"."n" ; echo mindia_option('md_customjs'); echo mindia_option('md_tongji'); echo "</script>"."n"; } add_filter("wp_footer", "mindia_footer_code",100) |
---|
以上演示代码均来自于开发的Mindia 主题中。
- 区块链行业的机会
- KEGG数据库的rest API(附带R语言小技巧)
- 如何使用Java代码访问HDFS.docx
- Django CSRF Bypass (CVE-2016-7401) 漏洞分析
- 如何使用Cloudera Manager禁用YARN的HA
- Web Worker 中的 importScripts 和 baseHref 同源策略绕过问题
- 如何使用Java代码访问CDH的Solr服务
- Safari UXSS漏洞分析(CVE-2016-4758)
- Sqoop抽取Hive Parquet表数据到MySQL异常分析
- Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析
- [译]Safari URL重定向漏洞(CVE-2016-4585)利用分析
- Hive中的Timestamp类型日期与Impala中显示不一致分析(补充)
- 百篇(5):FeignClient 在不同场景中的应用
- 如何使用Hue上创建一个完整Oozie工作流
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android实现筛选菜单效果
- AppCMS注入及评论xss漏洞
- css属性为 { flex: 1 }时表示的意思
- Android studio 实现手机扫描二维码功能
- Nginx 平滑升级与回滚
- Android实现通用筛选栏
- Android实现关机后数据不会丢失问题
- Canvas 进阶(五)实现图片滤镜效果
- 将IP地址字符串分割成数组
- android监听器实例代码
- (火狐)Selenium WebDriver测试 NotADirectoryError: [WinError 267] 目录名称无效。
- 浅析Android高斯模糊实现方案
- Android 自定义验证码输入框的实例代码(支持粘贴连续性)
- _countof和sizeof
- Flutter适配深色模式的方法(DarkMode)