web-dev-qa-db-fra.com

Est-il possible d'obtenir un paramètre de personnalisation du thème à partir de wp. Personnaliser à l'aide de jQuery?

Je me demande s’il est possible d’interopérer directement avec l’API wp.customize pour obtenir la valeur d’un paramètre de personnalisation de thème. La façon dont je le fais maintenant utilise ajax pour obtenir une réponse d'une fonction php. Je semble avoir beaucoup de problèmes avec elle.

Je sais que vous pouvez vous lier aux contrôles de personnalisation de thème à l'aide de jQuery avec l'API wp.customize, bien que je me demande si je peux accéder directement à un paramètre à partir de jQuery.

EDIT: Plus d'informations

Je sais que vous pouvez interagir avec les contrôles directement via l'API comme ceci:

/** Site title and description. */
wp.customize( 'blogname', function( value ) {
    value.bind( function( to ) {
        $( '.site-title a' ).html( to );
    } );
} );

Je me demande s'il est possible d'utiliser la même API pour accéder directement aux valeurs de paramètre de thème, en utilisant uniquement jquery?

Sinon, je pense que ce ne serait pas difficile et qu'il serait avantageux d'étendre l'API wp.customize (et peut-être toutes les autres fonctions wp d'ailleurs) pour faire exactement ce que je fais manuellement avec ajax et php, Les utilisateurs ne peuvent utiliser jQuery qu’ils-mêmes pour interagir avec les fonctions wp et faire en sorte que Wordpress fasse le sale boulot en coulisse. Cela peut être une fonctionnalité intéressante pour une version ultérieure de WP.

2
user1632018

Vous n'êtes pas sûr de ce que vous essayez d'accomplir, mais vous pouvez obtenir une valeur par clé à l'aide de l'objet wp.customize:

wp.customize.value('show_on_front')();
wp.customize.value('blogname')();
....

désolé pas jQuery ici, juste javascript, et oui, les extra () sont intentionnelles.

Edit: aperçu complet de tous les paramètres:

wp.customize._value;
console.log(wp.customize._value);

Edit II:

une approche différente:

a) rechercher tous les paramètres disponibles en utilisant

console.log(wp.customize._value);

b) on ne peut pas accéder directement à la valeur, donc

wp.customize._value.blogname

ne fonctionnera pas. Mais si vous en appelez une fonction, cela devrait fonctionner:

wp.customize._value.blogname();

Je ne pense pas que ce soit destiné à être utilisé de cette façon (s'il y a une intention d'utilisation), mais cela fonctionne pour moi. Je viens juste d'inspecter l'objet wp.customize et je n'ai pas cherché comment WP construisait cet objet _value. C'est une bonne idée de vérifier si un paramètre est disponible et s'il s'agit d'une fonction. Enfin, vous pouvez utiliser jQuery;)

if ( jQuery.isFunction(wp.customize._value.blogname) ) {
// do stuff
}

ou comme nos parents l'auraient fait;)

if(typeof wp.customize._value.blogname === 'function')
    //do stuff
{
9
ungestaltbar