自定义主题中未保存的定制值

时间:2016-04-27 作者:DavidBrown

我正在使用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)。

感谢您的任何意见(包括指出我可能存在的明显疏忽)。谢谢

1 个回复
SO网友:Ashiquzzaman Kiron

此实时预览代码应如下所示-

wp.customize(\'inspection_cta_text\', function(value){
    value.bind( function(to) {
        $(\'.footer-cta\').text(to);
    });
});
基本上你不需要“em”。而且主题mod中应该始终存在默认值。例如-

.footer {
     border-top: solid 1px #<?php echo get_theme_mod( \'background_color\', \'#fff\' ); ?>;
}
在你的情况下,它将是-

<h5 class="footer-cta"><em><?php echo get_theme_mod(\'inspection_cta_text\', \'default text\'); ?></em></h5>

相关推荐