我正在使用WP版本4.5.1向自定义主题中的自定义程序添加一个简单的文本字段。我经常在我的主题中添加这些自定义项,但这一次没有任何价值保存到数据库中。
我正在customizer中注册一个自定义节、字段和控件,并在模板文件中将其作为主题mod调用。
代码如下:
自定义程序。php
function mytheme_customize_register( $wp_customize ) {
//Footer CTA
$wp_customize->add_section(
\'footer\',
array(
\'title\' => __(\'Footer CTA\', \'mytheme\'),
\'priority\' => \'200\'
)
);
$wp_customize->add_setting(
\'inspection_cta\',
array(
\'default\' => __(\'Schedule Your Inspection\', \'mytheme\'),
\'type\' => \'theme_mod\',
\'sanitize_callback\' => \'mytheme_sanitize_customizer_input\'
)
);
$wp_customize->add_control( new WP_Customize_Control(
$wp_customize,
\'inspection_cta_text\',
array(
\'label\' => __(\'Inspections CTA Text\', \'mytheme\'),
\'section\' => \'footer\',
\'settings\' => \'inspection_cta\',
\'type\' => \'text\',
\'priority\' => \'10\'
)
)
);
$wp_customize->get_setting( \'inspection_cta_text\' )->transport = \'postMessage\';
}
add_action( \'customize_register\', \'mytheme_customize_register\' );
function mytheme_sanitize_customizer_input($input){
return strip_tags(stripslashes($input));
}
用于预览的JavaScript:
wp.customize(\'inspection_cta_text\', function(value){
value.bind( function(to) {
$(\'.footer-cta em\').text(to);
});
});
并在主题文件中这样调用它:
<h5 class="footer-cta"><em><?php echo get_theme_mod(\'inspection_cta_text\'); ?></em></h5>
所有内容都正确注册,因为新的节和选项在customizer中可用,但live preview不起作用,保存时不会将任何值保存到数据库(wp\\u options>theme\\u mods\\u mytheme)。
感谢您的任何意见(包括指出我可能存在的明显疏忽)。谢谢