WordPress 内置主题选项

制作一款高级的WordPress主题集成强大的主题选项面板是必不可少的,常见的主题选项框架有:Redux Framework、Options Framework、Fluent Framework等,前两个用的比较多。文章源自知更鸟-https://zmingcx.com/customize-api.html

其实还有一个就是WordPress内置的,WordPress很早就集成主题选项API,预置了几乎你能想到所有设置选项,最大的优势是可以实时预览设置的内容,这是上面的主题选项框架做不到的。文章源自知更鸟-https://zmingcx.com/customize-api.html

WordPress 内置主题选项文章源自知更鸟-https://zmingcx.com/customize-api.html

下面的是个简单的示例,将代码添加到主题函数模板functions.php中即可:文章源自知更鸟-https://zmingcx.com/customize-api.html

展开收缩
文章源自知更鸟-https://zmingcx.com/customize-api.html
function zm_customize_register($wp_customize) {
	
	$wp_customize->add_setting('header_title', array(
		'default' => '默认文字',
		'capability' => 'edit_theme_options',
		'sanitize_callback' => 'sanitize_header_title'
	));

	$wp_customize->add_setting('header_subtitle');
	$wp_customize->add_setting('intro_text');
	$wp_customize->add_setting('featured_post');

	$wp_customize->add_section('zm_general_section', [
		'title' => '主题设置',
		'priority' => 1
	]);

	$wp_customize->add_control('zm_header_title_ctrl', [
	'label' => 'Header Title',
		'section' => 'zm_general_section',
		'settings' => 'header_title',
		'type' => 'text'
	]);

	$wp_customize->add_control('zm_header_subtitle_ctrl', [
		'label' => 'Header Subtitle',
		'section' => 'zm_general_section',
		'settings' => 'header_subtitle',
		'type' => 'text'
	]);

	$wp_customize->add_control('zm_intro_text_ctrl', [
		'label' => 'Intro Text',
		'section' => 'zm_general_section',
		'settings' => 'intro_text',
		'type' => 'textarea'
	]);

	$pages = get_posts([
		'nopaging' => true,
		'post_type' => 'page',
		'post_status' => 'publish'
	]);

	$page_ids = array_map(function($el) {
		return $el->ID;
	}, $pages);

	$page_names = array_map(function ($el) {
		return $el->post_title;
	}, $pages);


	$wp_customize->add_control('zm_featured_post_ctrl', [
		'label' => 'Featured Post',
		'section' => 'zm_general_section',
		'settings' => 'featured_post',
		'type' => 'select',
		'choices' => array('' => '') + array_combine($page_ids, $page_names)
	]);

}
add_action('customize_register', 'zm_customize_register');

function sanitize_header_title($title) {
	return ucfirst($title);
}

文章源自知更鸟-https://zmingcx.com/customize-api.html

调用方法:文章源自知更鸟-https://zmingcx.com/customize-api.html

echo get_theme_mod('header_title');

上面只是基本的设置,如果想添加更多的设置选项,可以参考官方文档文章源自知更鸟-https://zmingcx.com/customize-api.html

或者下载使用完整的选项文件。文章源自知更鸟-https://zmingcx.com/customize-api.html

解压后将文件夹放到主题目录中,调用方式:文章源自知更鸟-https://zmingcx.com/customize-api.html

require get_template_directory() . '/theme-customizer-demo.php';

参考文档:文章源自知更鸟-https://zmingcx.com/customize-api.html

The Customize API 文章源自知更鸟-https://zmingcx.com/customize-api.html

WordPress Theme Panel Options Frameworks文章源自知更鸟-https://zmingcx.com/customize-api.html

Creating WordPress Theme Options With the Theme Customization API 文章源自知更鸟-https://zmingcx.com/customize-api.html

文章源自知更鸟 | 崇尚专注 追求极致 分享交流WordPress经验与技巧,关注前端设计与网站制作,打造自己专属的WordPress主题,让你的博客与众不同!
weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
让 WordPress 页面支持添加分类及标签 WordPress

让 WordPress 页面支持添加分类及标签

默认WordPress页面不支持选择分类和添加标签,可以通过下面的方法为页面添加分类及标签。 将下面代码添加到当前主题函数模板functions.php中: function san_add_taxo...
自定义 WordPress 文章显示数量 WordPress

自定义 WordPress 文章显示数量

一般我们都在设置 → 阅读 → 博客页面至多显示中,统一设置每个页面的文章显示数量,如果想某些页面自定义显示数量,不受这个控制,可以通过下面的代码实现。 自定义 WordPress 文章显示数量 将下...
WordPress 在文章页以标签云形式显示文章标签 WordPress

WordPress 在文章页以标签云形式显示文章标签

大家都看过WordPress 标签小工具的标签云,标签按文章数显示不同的大小,看上去很生动,那么在文章页面是否也可以用标签云的形式调用该文章标签呢?当然是可以的。 WordPress 在文章页以标签云...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定

评论:2   其中:访客  2   博主  0
    • 奇点资讯
      奇点资讯 2

      虽然我不会用,但是我还是过来看看

      • 阿里舞台素材网
        阿里舞台素材网 2

        我猜测这个是给主题发布分享站点使用的,可以让自己或访客自由选用网站主题。