Je me demande s’il est possible d’étendre les méthodes de l’objet anonyme api
dans wp-admin/js/customize-control.js
. Je dois écraser une de ces méthodes avec ma propre logique personnalisée, mais j’imagine que ce n’est pas possible car elle est encapsulée dans une expression de fonction immédiatement invoquée:
/* globals _wpCustomizeHeader, _wpMediaViewsL10n */
(function( exports, $ ){
// code
})( wp, jQuery );
Autant que je sache, je ne suis pas en mesure d'étendre le prototype à partir de l'objet window car il est exécuté de manière anonyme et n'est pas disponible à partir de window.wp.customize
. Une idée si une telle chose est possible? Il est même question de redéfinir ceci dans la documentation/description des méthodes .toggle (): https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110 , mais je ne sais pas s'ils veulent dire simplement en forçant tout le fichier JS, en retirant la file d'attente de la version WP et en mettant la vôtre en file d'attente, ou s'ils signifient quelque chose de différent.
Notez qu'il semble que cela devrait être possible avec wp.customize.{method}.extend({ foo: // replace method foo here })
mais que cela ne s'applique qu'aux classes/objets de base publics, pas à ceux de wp-admin/js/customize-control.js
Je vais améliorer mon petit commentaire sur votre question. Mais encore une fois l'indice; Je ne suis pas un expert du JS. La source suivante, les astuces, n’était utilisée que lors de la lecture avec le Customizer pour différents contrôles, exemples, comme mon sandbox .
Comprendre l'interface du personnalisateur de thèmes WP est centré sur la compréhension de l'objet JavaScript wp.customize. L'objet wp.customize
est important et vous devez le définir au début.
Les petits exemples suivants le montrent. Au début, je règle var api
sur l'objet du personnaliseur. Après cela, je règle mes champs personnalisés sur api
et les améliore avec une petite source jQuery pour actualiser le résultat pour un aperçu en direct.
( function( $ ) {
var api = wp.customize;
// Site title and description.
api( 'blogname', function( value ) {
value.bind( function( to ) {
$( '#header h1 a, #footer a.site-name' ).html( to );
} );
} );
api( 'blogdescription', function( value ) {
value.bind( function( to ) {
$( '#header p.site-description' ).html( to );
} );
} );
} )( jQuery );
Les objets de contrôle sont stockés dans wp.customize.control
et les objets de réglage dans wp.customize
. Les classes de valeur ont beaucoup de fonctions, elles peuvent vous aider.
Avec ces fonctions, nous pouvons améliorer nos paramètres personnalisés.
var api = wp.customize,
mysetting = api.instance( 'my_custom_setting' );
également utilisable pour un tableau
var api = wp.customize,
mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' );
Voir le résultat dans la console.
console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() );
Vous pouvez également modifier les valeurs de réglage via la fonction set
.
api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) );
console.log( api.control.instance( 'my_custom_setting_field' ) );