web-dev-qa-db-fra.com

Comment charger JavaScript dans Wordpress Plugin

Quelqu'un peut-il me montrer comment inclure ce fichier javascript dans mon wordpress plugin. J'ai essayé toutes les méthodes WP_ENQEUE_Script (), mais rien ne se passe.

ok voici mon exemple de code plug-in avec des commentaires expliquant ce que je voudrais.

<?php
/*
Plugin Name: Ava Test
Plugin URI: http://#.com
Description: A plugin that is used for my javascript tests
Author: Ronny Kibet
Author URI: http://ronnykibet.com
version: 1.001
*/

include(popup.js); 
/*when I include it this way, it works fine, but gives an error when I activate the plugin
'plugin generated 453 characters ...'
*/

function popup() {
$src = plugins_url('popup.js', __FILE__);
wp_register_script( 'popup', $src );
wp_enqueue_script( 'popup' );
}
/*
when I included it this way, plugin is activated but nothing happens.
*/
?>

c'est le popup.js

<script type="text/javascript">

function popup(){


alert('hello there this is a test popup')

}
</script>
<body onload="popup()">
</body>

Donc, quiconque sait comment appeler ce script pour fonctionner correctement dans wordpress plugin?

18
Ronny Kibet

Vous devez spécifier lorsque la charge devrait se produire, essayez ceci.

<?php
/*
Plugin Name: Ava Test
Plugin URI: http://#.com
Description: A plugin that is used for my javascript tests
Author: Ronny Kibet
Author URI: http://ronnykibet.com
version: 1.001
*/

add_action('wp_enqueue_scripts','ava_test_init');

function ava_test_init() {
    wp_enqueue_script( 'ava-test-js', plugins_url( '/js/ava_test_.js', __FILE__ ));
}

En outre, il y a des erreurs dans votre JS, mais j'ai vu la version correcte dans certaines réponses, espérons que cela aide

Mise à jour: Il y a un crochet appelé wp_enqueue_scripts, comme mentionné par @Brasofilo, qui doit être utilisé au lieu d'init pour charger des scripts.

34
aghoshx

Apprendre à travailler dans les WP structure peut être frustrant.

Et, apprendre à faire en javascript peut être encore plus frustrant.

Donc, tout le monde ici a contribué quelque chose de précieux, mais vous devez tout mettre ensemble. Donc:

D'abord:
Retirez votre ligne include. Tu n'en a pas besoin.

Seconde:
Assurez-vous que la variable $ src dans votre code est en fait le bon chemin. Je voudrais ajouter un:

echo $src;

Pour vérifier si l'emplacement est correct.

Troisièmement: Aghoshx est correct - vous devez avoir la référence de crochet:

add_action('init','popup');

(Depuis que vous avez nommé le menu contextuel de la fonction, c'est ce que je mets - Toutefois, pour éviter colissions nom de fonction avec d'autres WP fonctions et plugins, je recomment que vous le changer pour quelque chose de plus unique, comme aghoshx proposé)

Quatrième: Vérifiez que votre script est le chargement. Une fois que vous faites les étapes 1-3 ci-dessus, puis allez rafraîchir le WP la page et faire une " source de vue ". Recherchez votre fichier script. Si vous êtes dans Firefox, vous pouvez réellement cliquer sur l'URL et le charge - si vous êtes dans IE, puis copiez-collez l'URL dans la barre d'URL et voir si, en fait, votre fichier est là (le cas échéant, il est chargement. Sinon, ce n'est pas charger le fichier correctement, et vous devez corriger le chemin que vous définissez dans e variable $ src).

Cinquième: Une fois que vous obtenez ci-dessus cloués, cillosis est juste - vous devez supprimer tout mais la fonction javascript (vous supprimez même les balises) à partir du fichier javascript.

Enfin: regardez réponse Martti Laines - vous devez lier l'événement à l'aide de son suggéré window.addEventListener, OR modifier ELSE la balise dans votre modèle php pour contenir le onload = " pop-up " (comme vous aviez en le fichier script).

Un bit final de suggestion:

jQuery fait beaucoup de choses beaucoup plus facile. Il est très facile de mettre jQuery dans votre WP plugin. Il suffit d'ajouter dans votre fonction php pop-up:

enqueue_script('jquery');

Bonne chance!

2
cale_b