Est-il possible d’obtenir une valeur par défaut définie dans le paramètre Customizer? Voici un exemple de code:
// 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',
) );
Si le contrôle actuel a déjà une valeur définie, disons qu'il s'agit de "WooCommerce", comment puis-je obtenir une valeur par défaut qui est définie sur "WordPress" à l'aide de l'API wp.customize de JS?
J'ai essayé ceci:
wp.customize.instance( 'slug_awesome_title' ).get()
mais il retourne la valeur actuelle du contrôle.
Il serait logique que la valeur par défaut soit disponible via:
wp.customize.instance( 'slug_awesome_title' ).default
Ou équivalent:
wp.customize( 'slug_awesome_title' ).default
Cependant, je peux voir que la variable default
n'est tout simplement pas exportée de PHP vers JS. Je peux voir que cela va être nécessaire dans le noyau aussi lorsque la création de modèles côté client remplace le rendu des contrôles côté serveur dans # 30738 , de sorte qu'un patch principal serait nécessaire.
Néanmoins, entre-temps, vous pouvez ajouter le PHP suivant pour exporter votre valeur default
sur l'objet JS Setting
afin de produire le même effet:
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 )
) );
} );
Vous pouvez accéder à tous les paramètres par défaut en appelant l'objet:
wp.customize.settings.values
Par exemple:
// 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 ) {
// ....
} );
} );