Supposons que j'ai deux contrôles de personnalisation, "setting_category" et "setting_font", j'essaie de modifier les choix de "setting_font" en changeant la valeur de "setting_category". Voici ce que je fais:
( function( $ ) {
var api = wp.customize;
api( 'setting_category', function( value ) {
value.bind( function( to ) {
var newChoices = {};
// get new data from JSON using 'to' and populate the 'newChoices'
api( 'setting_font' ).changeTheChoices( newChoices );
} );
} );
} )( jQuery );
Comment peut-on le faire avec JavaScript? Un truc?
Voici la solution que j'ai trouvée, elle peut être utile dans certains cas:
parent.wp.customize.control( 'setting_category', function( control ) {
control.setting.bind( function( to ) {
var selectElem = parent.wp.customize.control( 'setting_font' ).container.find( 'select' );
selectElem.empty();
$.each( jsonData['items'], function( key, item ) {
if ( item['category'] === to ) {
var option = $( '<option></option>' )
.attr( "value", encodeURIComponent( item['family'] ) )
.text( item['family'] );
selectElem.append( option );
}
} );
} );
} );
Tu es proche. Il vous suffit de remplacer changeTheChoices()
par set()
car il s'agit d'une méthode sur wp.customize.Setting
. Voir ce qui suit aussi un peu de refactor:
wp.customize( 'setting_category', 'setting_font', function( categorySetting, fontSetting ) {
categorySetting.bind( function( category ) {
var newChoices = {};
// get new data from JSON using 'category' and populate the 'newChoices'
fontSetting.set( newChoices );
});
});
Conseil: Je suggère de ne pas utiliser "setting
" dans les identifiants de vos paramètres.