Comment mettre en file d'attente JavaScripts dans un plugin

14

J'ai beaucoup de mal cette fois à travailler sur l'inclusion d'un fichier JavaScript dans le dossier du plugin.

J'essaie de créer un plugin en transférant des fichiers widget depuis le répertoire des thèmes. J'ai copié le fichier widget, mais ce fichier widget dépendait d'un fichier JavaScript, j'ai donc créé un dossier / js / dans le répertoire du plugin. où ce fichier est hébergé "jquery.repeatable.js"

J'ai utilisé ce code, mais il ne semble pas inclure le fichier js -

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

J'ai cherché sur forum- /programming/31489615/call-a-js-file-from-a-plugin-directory

Mais cela n'a toujours pas été utile.

Je résume ma question. Dans mon répertoire de plugin, il y a un fichier js sous ce dossier - / js /

Je souhaite inclure quel est le processus correct, dois-je également enregistrer quelque chose?

Y a-t-il un problème avec cette portion - 'admin_enqueue_scripts'?

L'intermédiaire WP
la source

Réponses:

30

Votre code semble correct, mais il ne chargera le script que dans la zone d'administration, car vous mettez le script en file d'attente en admin_enqueue_scriptsaction .

Pour charger le script en frontend, utilisez wp_enqueue_scriptsaction (qui n'est pas la même que cette wp_enqueue_script()fonction ):

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

De plus, ce script semble dépendre de jQuery, vous devez donc déclarer que dependencie ou le script peut être chargé avant jQuery et que cela ne fonctionnera pas. Aussi, je recommande fortement de déclarer la version du script. De cette façon, si vous mettez à jour le script vers une nouvelle version, le navigateur le téléchargera à nouveau et supprimera la copie qu'il peut avoir dans le cache.

Par exemple, si la version du script est 1.0:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

Si vous souhaitez le charger dans la zone d'administration:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');
cybmeta
la source
1

MIS À JOUR:

Utilisez ce code à la place

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

Le troisième paramètre est de déclarer la dépendance et le quatrième est de définir la version.

Définissez le 5ème paramètre wp_enqueue_script()sur true. Cela signifie que ce fichier sera chargé en pied de page.

mukto90
la source
Le troisième paramètre de wp_enqueue_script()est de déclarer les dépendances du script. Le cinquième paramètre est celui à choisir si vous souhaitez charger le script dans le pied de page ou dans l'en-tête. Quoi qu'il en soit, je ne pense pas que la place à charger fasse une différence.
cybmeta
Merci. J'ai lu quelque part dans un autre plugin que quelqu'un fait comme ça - wp_enqueue_script ('zumper', get_template_directory_uri (). '/Js/jquery.zumper.min.js',array('jquery'),false,true); Vous avez dit que le fait de placer 3e sur true signifie qu'il sera chargé dans le pied de page, alors que signifie cette combinaison fausse et vraie?
The WP Intermediate
J'ai mis à jour ma réponse. Est-ce que ça marche?
mukto90
1

J'utilise normalement la méthode plugins_url () pour réaliser la mise en file d'attente.

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugins_url('js/jquery.repeatable.js', __FILE__ ), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');
Zaheer Abbas
la source