由于您直接调用更改回调:
value.call( customize, func );
既然您没有传入值
newval
将是
undefined
和
$customStylesheet.text(newval)
什么也做不了。
您需要像这样传入值:
value.call( customize, func, value.get() );
然而,最好重新利用现有的
style
元素,该元素已由PHP输出,仅在更改设置时更新,而不是每次使用JS动态创建。
因此,您的PHP应该具有以下内容:
add_action( \'wp_head\', function() {
$options = get_theme_mod( \'cf7md_options\' );
echo \'<style id="cf7md-style">\';
if ( isset( $options[\'custom_css\'] ) ) {
echo strip_tags( $options[\'custom_css\'] );
}
echo \'</style>\';
}, 101 );
您的自定义预览JS可以简单地:
(function( $, api ) {
api( \'cf7md_options[custom_css]\', function( setting ) {
setting.bind( function onChange( value ) {
$( \'#cf7md-style\' ).text( value );
} );
} );
}( jQuery, wp.customize ));