web-dev-qa-db-fra.com

Ajouter des feuilles de style et des js aux fichiers de modèle lorsque le shortcode est utilisé

Après avoir cherché des jours à travers le filet et sans succès - je voudrais demander à tous les gars.

PROBLÈME: j'ai besoin d'ajouter du code personnalisé à la tête du fichier dans le cadre de l'utilisation du shortcode pour mon plugin. Les mêmes fichiers et le même code s'insèrent parfaitement dans la page d'administration (backend) mais ne parviennent pas à se charger dans le fichier de modèle.

Les fichiers sont insérés dans la tête de l’administrateur avec add_action ('admin_print_scripts', 'add_swm_scripts'); & add_action ('styles_admin_administration', 'styles_swm_)'; appels pointant vers des fonctions qui utilisent wp_enqueue_script () et wp_register_style ()/wp_enqueue_style () Cela ne pose pas de problème - cependant - lorsque j'essaie d'obtenir les mêmes fichiers enregistrés dans la fonction du shortcode (pour les utiliser dans le modèle), rien ne fonctionne.

J'ai vérifié que le shortcode est lu et que sa fonction est déclenchée, mais ni add_action ('wp_enqueue_scripts', 'swm_scripts'); , add_action ('init', 'register_swm_scripts'); nor add_action ('wp_head', 'print_swm_scripts'); marchera. J'ai essayé plus que cela ne trouve pas une solution de travail. Si quelqu'un connaît un tour valable, j'apprécie plus que tout un conseil.

Merci d'avance!

Herbie

1
herbie

mettez wp_enqueue_script () dans votre gestionnaire de shortcode.

add_shortcode('myshortcode', 'my_shortcode_handler');

function my_shortcode_handler($atts) {
  wp_enqueue_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true);

  // actual shortcode handling here
  return "bacon flavored shortcode here";
}

cela charge définitivement le fichier my-script.js pour moi. il est cependant chargé dans le pied de page. Je ne pense pas qu'il y ait un moyen de le charger conditionnellement dans l'en-tête, car il ne sera pas arrivé au contenu du message pour savoir si le shortcode est utilisé ou non.

vérifiez ceci: http://scribu.net/wordpress/conditional-script-loading-revisited.html

2
helgatheviking