WordPress框架 Options Framework 的自定义技巧

Options Framework框架我想不用我介绍太多了,玩WordPress的开发人员都知道它的名气,我接触过的主题有很多都是使用这个框架的,你可能只需要知道它是最具易用性的一款后台框架插件之一就行了,部署起来简单且它的前端调用我想应该是最方便易懂的。

图片[1]-WordPress框架 Options Framework 的自定义技巧-灵阳星空

上面的是源码地址以及教程,不懂的可以去看看,不过相信玩WP的都应该会吧,今天给大家说的是关于Option Framework的几个自定义技巧,相信大家都会用的上。

自定义一:自定义设置函数名称

默认的话,Options Framework 的设置调用函数名称为 of_get_option(),如果你想自定义为其他,需要对源代码本身修改了——打开options-framework.php 这个文件,定位到最后一个定义函数的地方,将of_get_option改为你需要的,比如:

if ( ! function_exists( 'jsk_option' ) ) :
function jsk_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;
}

就可以实现函数名称为jsk_option。

自定义二:自定义设置页面标题、别名

默认的话,地址栏里面的设置页面别名(URL)类似于wp-admin/themes.php?page=options-framework。如果你控制欲犯了,想设置为其他,那么可以用下面的代码实现之:

function prefix_options_menu_filter( $menu ) {
	$menu['mode'] = 'menu';
	$menu['page_title'] = 'Jsk 主题设置';
	$menu['menu_title'] = 'Jsk 主题设置';
	$menu['menu_slug'] = 'jsk-options';
	return $menu;
}
add_filter( 'optionsframework_menu', 'prefix_options_menu_filter' );

自定义三:让主题设置的文本内容允许javascript代码

不知道从哪个版本开始,为了安全,Options Framework 框架默认的话会过滤掉js代码,因此如果你需要在设置里面做设置的话可能会遇到直接输出js代码的问题,解决这个的话本人目前使用这个方法:即在输出前自动添加javascript标签,然后在设置页面要求用户不用输入javascript标签。这样算是比较好的解决了这个问题。

function jsk_footer_code(){
	echo "<script type='text/javascript'>"."\n" ;
	echo jsk_option('md_customjs');
	echo jsk_option('md_tongji');
	echo "</script>"."\n"; 
}
add_filter("wp_footer", "jsk_footer_code",100)

自定义四:将菜单移动到顶级菜单

打开 inc/includes/class-options-framework-admin.php 文件,然后知道其中的 add_custom_options_page 方法,将其代码替换为如下代码:

public function add_custom_options_page() {
	$menu = $this->menu_settings();

	switch ($menu['mode']) {

		case 'menu':
		// http://codex.wordpress.org/Function_Reference/add_menu_page
			$this->options_screen = add_menu_page(
				$menu['page_title'],
				$menu['menu_title'],
				$menu['capability'],
				$menu['menu_slug'],
				array($this, 'options_page'),
				$menu['icon_url'],
				$menu['position']
			);
			break;
		default:
		// http://codex.wordpress.org/Function_Reference/add_submenu_page
			$this->options_screen = add_submenu_page(
				$menu['parent_slug'],
				$menu['page_title'],
				$menu['menu_title'],
				$menu['capability'],
				$menu['menu_slug'],
				array($this, 'options_page'));
			break;   
	}
}

添加完成后,在你的主题的 functions.php 文件中添加如下代码:

function jsk_options_menu_filter($menu) {
	$menu['mode'] = 'menu';
	$menu['page_title'] = 'Jsk 主题设置';
	$menu['menu_title'] = 'Jsk 主题设置';
	$menu['menu_slug'] = 'jsk-options';

	return $menu;

}
add_filter('optionsframework_menu', 'jsk_options_menu_filter');

就可以实现将主题配置移动到顶级菜单。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论