是否可以获取在Customizer设置中设置的默认值?以下是代码示例:
// Add setting.
$wp_customize->add_setting( \'slug_awesome_title\', array(
\'default\' => esc_html__( \'WordPress\', \'slug\' ),
\'sanitize_callback\' => \'sanitize_text_field\',
) );
// Add control.
$wp_customize->add_control( \'slug_awesome_title\', array(
\'label\' => esc_html__( \'Section Title\', \'slug\' ),
\'section\' => \'slug_awesome_section\',
\'type\' => \'text\',
) );
如果当前控件已经有一个设置值,比如说它是“WooCommerce”,那么如何使用wp获得设置为“WordPress”的默认值。在JS中自定义API?
我试过这个:
wp.customize.instance( \'slug_awesome_title\' ).get()
但它返回控件的当前值。
最合适的回答,由SO网友:Weston Ruter 整理而成
可以通过以下方式使用默认值:
wp.customize.instance( \'slug_awesome_title\' ).default
或等效:
wp.customize( \'slug_awesome_title\' ).default
然而,我可以看到
default
只是没有从PHP导出到JS。我可以看出,当客户端模板替换中控件的服务器端呈现时,在core中也需要这样做
#30738, 所以a
core patch 将是必要的。
尽管如此,您可以同时添加以下PHP来导出default
JS上的值Setting
对象具有大致相同的效果:
add_action( \'customize_controls_enqueue_scripts\', function() {
global $wp_customize;
wp_add_inline_script( \'customize-controls\', sprintf(
\'wp.customize( "slug_awesome_title", function ( setting ) { setting.default = %s; } );\',
wp_json_encode( $wp_customize->get_setting( \'slug_awesome_title\' )->default )
) );
} );