カスタマイザ設定で設定されたデフォルト値を取得することは可能ですか?これがコードの例です。
// 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"だとしましょう、どうすればJSでwp.customize APIを使って "WordPress"に設定されているデフォルト値を取得できますか?
私はこれを試してみました:
wp.customize.instance( 'slug_awesome_title' ).get()
しかし、それはコントロールの現在の値を返します。
デフォルト値が利用可能であることは意味があります:
wp.customize.instance( 'slug_awesome_title' ).default
または同等に:
wp.customize( 'slug_awesome_title' ).default
しかし、default
はPHPからJSにエクスポートされていないのがわかります。クライアントサイドのテンプレートが #30738 のコントロールのサーバーサイドレンダリングを置き換えるときにも、これがcoreで必要になることがわかるでしょう。そのため、 coreパッチ が必要になります。
それにもかかわらず、当面の間は、次の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 )
) );
} );
オブジェクトを呼び出すことで、すべてのデフォルト設定にアクセスできます。
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 ) {
// ....
} );
} );