web-dev-qa-db-fra.com

Processus d'enregistrement du déclencheur Customizer avec Javascript uniquement

Je travaille sur un thème personnalisé qui utilise l'API de personnalisation WordPress pour permettre à l'utilisateur de jouer avec des parties du contenu de son site Web, essentiellement la page d'accueil qu'il peut modifier en ajoutant/supprimant des blocs personnalisés tels que les derniers articles, pages enfants, etc. La structure des Noirs est collectée et renseignée dans une entrée personnalisée.

Tout fonctionne bien sauf pour la sauvegarde, le Customizer semble avoir une sécurité qui m'empêche d'enregistrer la valeur saisie: pour la sauvegarder, je dois déclencher manuellement un événement Javascript 'appuyer sur une touche' en sélectionnant l'entrée et en appuyant sur une touche. Sinon, le bouton d'envoi reste désactivé.

En parcourant /wp-admin/js/customize-controls.js, je parviens à activer le bouton d'envoi:

wp.customize.trigger('change')

Mais même si la sauvegarde est déverrouillée, cela n’a aucun effet: la valeur d’entrée n’est pas envoyée à admin_ajax.php et mes données ne sont pas sauvegardées.

Avez-vous une idée de la façon dont je pourrais forcer le déclencheur sur l'API Javascript à sauvegarder mes données? Je ne pouvais pas trouver de document détaillé sur l'API JS WP, cela pourrait également m'aider si je l'avais manqué quelque part.

4
Askelon

Au lieu d’utiliser jQuery pour mettre à jour la valeur de l’entrée personnalisée, utilisez la fonction set() de l’objet wp.customize (située dans personnaliser-base.js ):

wp.customize( key, function ( obj ) {
    obj.set( newValue );
} );

key est le paramètre et newValue est la valeur mise à jour.

À noter également, dans la classe qui étend WP_Customize_Control, veillez à utiliser $this->get_link() pour placer l'attribut de données data-customize-setting-link sur l'entrée personnalisée (trouvée dans class-wp-personnaliser-control.php ).

3
Matthew