分享几个wordpress的主题选项框架

wordpress主题选项框架有很多,可以说是包罗万象,但要找一个适合自己所开发的主题的框架并不是一件简单的时,因为关乎到这个主题后续的维护

options-framework-theme

这是一个比较经典的选项框架,虽然最后一次更新是在几年,但是还是有很多主题都使用这款选项框架

分享几个wordpress的主题选项框架

github地址:http://github.com/devinsays/options-framework-theme

options.php

// 在optionsframework_options函数中往options数组追加设置选项即可
$options[] = array(
	'name' => __( '站点Logo', 'theme-textdomain' ),
	'desc' => __( '请设置logo', 'theme-textdomain' ),
	'id' => 'logo', // 选项的字段key
	'std' => 'logo.png', // 默认值
	'class' => 'mini', // mini, tiny, small
	'type' => 'text' // checkbox, text....
);

index.php

of_get_option('logo', 'default_logo.png');

customizer

分享几个wordpress的主题选项框架

github地址:http://github.com/maddisondesigns/customizer-custom-controls

其实wordpress已经自带customizer-custom-controls,我们只需要为customize_register挂载一个函数就可以,该函数的参数($wp_customize)是一个类,调用该类的add_section可以添加一个选项,add_control添加一个控件,每添加一个控件后都必需使用add_setting方法来添加一个默认值,

functions.php

function my_theme_options ($wp_customize) {
	// 添加选项
	$wp_customize->add_section('header', array(
		'title' => '站点Logo',
		'description' => '请设置站点的Logo',
		// 'panel' => 'test_panel',
	));
	$wp_customize->add_setting('logo', array(
		'default' => 'logo.png'
	));
	$wp_customize->add_control('logo', array(
		'label' => 'Logo',
		'section' => 'header',// 添加到哪块选项当中去
		'priority' => 1 // 优先权
	));
}
add_action('customize_register', 'my_theme_options');

index.php

get_theme_mod('logo', 'default_logo.png');

kirki

分享几个wordpress的主题选项框架

github地址:http://github.com/kirki-framework/kirki

functions.php

require_once get_template_directory() . '/inc/kirki.php';

if (class_exists('Kirki')) {
  Kirki::add_config('theme_config_id', array(
    'capability'  => 'edit_theme_options',
    'option_type' => 'option',
    'option_name' => 'theme_config_id',
  ));

  Kirki::add_section('logo_section', array(
    'title'    => '站点Logo',
    'priority' => 1,
  ));

  Kirki::add_field('theme_config_id', array(
    'type'    => 'text',
    'label'   => 'Logo',
    'setting' => 'logo',
    // 'settings' => 'logo', // 同上
    'section' => 'logo_section',
    'default' => 'default_logo.png',
  ));
}

index.php

Kirki::get_option( 'theme_config_id', 'logo' );

三个选项框架的优点以及缺点

options-framework-theme优点就是非常轻巧并且用法简单,但缺点是每次设置完之后需要自己手动刷新网页查看效果。
customizer、kirki 优点是可以很直观的看到设置过后的效果,缺点是比较臃肿,需要加载多个js脚本

但论大小排序的话,kirki是比较臃肿比较大的,其次customizer,最小options-framework。

最后个人的经验分享,如果是设置选项不多的话建议使用customizer(强力推荐)或者kirki,相反如果有上百个设置选项那么推荐使用options-framework-theme,因为options-framework-theme添加设置选项非常简单。

评论
:broken_heart: :confounded: :flushed: :frowning: :grinning: :heart: :kissing_heart: :mask: :pensive: :rage: :relaxed: :scream: :smile: :smirk: :sob: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_winking_eye: :wink: