在WordPress中,WP_Customize_Manager
类是用于管理定制主题的用户界面的核心类。要使用这个类来自定义主题设置,你需要按照以下步骤操作:
步骤 1: 创建一个自定义设置部分
首先,你需要使用 add_section()
方法来添加一个新的设置部分到定制器中。
function mytheme_customize_register( $wp_customize ) {
// 添加一个新的设置部分
$wp_customize->add_section( 'mytheme_customizer_section' , array(
'title' => __( '我的主题设置', 'mytheme' ),
'priority' => 30,
) );
}
add_action( 'customize_register', 'mytheme_customize_register' );
步骤 2: 添加设置和控制
接下来,你可以添加设置和控制到你的自定义部分。以下是一个添加文本设置和对应的文本控制的例子:
function mytheme_customize_register( $wp_customize ) {
// 添加一个新的设置部分
$wp_customize->add_section( 'mytheme_customizer_section' , array(
'title' => __( '我的主题设置', 'mytheme' ),
'priority' => 30,
) );
// 添加设置
$wp_customize->add_setting( 'mytheme_customizer_setting', array(
'default' => '默认值',
'type' => 'theme_mod', // 或 'option'
'capability'=> 'edit_theme_options',
'transport' => 'refresh', // 或 'postMessage'
) );
// 添加控制
$wp_customize->add_control( 'mytheme_customizer_control', array(
'label' => __( '自定义文本', 'mytheme' ),
'section' => 'mytheme_customizer_section',
'settings' => 'mytheme_customizer_setting',
'type' => 'text', // 可以是 'text', 'checkbox', 'textarea', 'radio', 'select', 'dropdown-pages' 等
) );
}
add_action( 'customize_register', 'mytheme_customize_register' );
步骤 3: 输出设置值
在主题的模板文件中,你可以使用 get_theme_mod()
函数来输出设置值。
<?php
$custom_text = get_theme_mod( 'mytheme_customizer_setting', '默认值' );
echo $custom_text;
?>
步骤 4: 实时预览(可选)
如果你想要在定制器中实现实时预览,你需要使用 JavaScript 来监听设置的变化,并更新页面。以下是一个简单的例子:
function mytheme_customize_preview_js() {
wp_enqueue_script( 'mytheme-customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '', true );
}
add_action( 'customize_preview_init', 'mytheme_customize_preview_js' );
然后在 customizer.js
文件中:
(function( $ ) {
wp.customize( 'mytheme_customizer_setting', function( value ) {
value.bind( function( newval ) {
$( '.my-custom-text' ).text( newval );
} );
} );
})( jQuery );
确保你的 HTML 元素有一个类名 my-custom-text
,这样 JavaScript 就可以找到它并更新文本。
以上步骤应该可以帮助你使用 WP_Customize_Manager
类来自定义主题设置。记得替换 mytheme
和相关字符串为你自己的主题前缀,以避免冲突。