使用wp.Customize API(JS)获取Customizer设置的默认值

时间:2017-05-26 作者:Taras Dashkevych

是否可以获取在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()
但它返回控件的当前值。

2 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

可以通过以下方式使用默认值:

wp.customize.instance( \'slug_awesome_title\' ).default
或等效:

wp.customize( \'slug_awesome_title\' ).default
然而,我可以看到default 只是没有从PHP导出到JS。我可以看出,当客户端模板替换中控件的服务器端呈现时,在core中也需要这样做#30738, 所以acore 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 )
    ) );
} );

SO网友:Helder Vilela

通过调用对象,可以访问所有默认设置:

wp.customize.settings.values
例如:

// Enqueue live preview javascript in Theme Customizer admin screen
wp.customize( \'my_control\', function( value ) {

    console.log( "default: ", wp.customize.settings.values.my_control );

    value.bind( function( newval ) {
        // ....
    } );
} );

结束

相关推荐

使用REST API更新CPT元数据

我正在尝试使用RESTAPI更新CPT帖子的元数据。我可以使用如下帖子更新数字元数据元素:实例com/wp-json/wp/v2/posts/73/meta/229?值=2此方法基于以下解决方法:WP REST API "rest_no_route" when trying to update meta我还可以使用这里的帖子更新元数据:示例。com/wp-json/wp/v2/posts/73/meta/229正文中包含此JSON:{\"value\":\"2\"} 但是,我