Je travaille sur un plugin qui utilise un shortcode pour appeler une fonction JQuery. Trois aspects sont nécessaires pour fonctionner:
$(document).ready(function())
J'ai déjà implémenté 1 et 2; 1 en utilisant wp_register_script
et, si le code court apparaît, wp_print_scripts
pour l’imprimer; et 2 en faisant de "id" un attribut de mon shortcode, qui est également renvoyé, par exemple. [myshortcode id="foo"]
renvoie id="foo"
.
Le problème est 3. L'initialisation est de la forme:
$(document).ready(function()
{
$("#id").func( {attributes} );
}
);
J'ai envisagé d'utiliser wp_localize_script
sur une variable pour l'ID; Cependant, je ne sais pas combien de fois le shortcode apparaîtra sur une page donnée, et il semble insuffisant d'enregistrer un nombre arbitraire de scripts sinon identiques et j'espère juste que le nombre ne sera pas dépassé.
On dirait que c'est probablement assez courant, mais je n'ai rien trouvé de similaire en cherchant. Des idées? Merci!
Pour le 2ème, je recommande d'utiliser la fonction php uniqid()
, prend une partie du travail de l'utilisateur.
Pour la troisième, je pense que le meilleur moyen d'implémenter est de continuer à ajouter l'id après chaque appel de shortcode à une variable globale/statique dans un tableau, puis de raccorder une fonction à wp_footer
qui lit cette variable pour obtenir tous les id et générer le javascript neccessary.
Pour le 1er, ajoutez ceci dans la fonction shortcode
STATIC $flag = false;
if(!$flag) {
$flag = true;
// include all your scripts that you want to include in the page only once
// These statements will be executed once per page load
// irrespective of how many times shortcode is called.
}