Как загрузить Javascript в Wordpress Plugin

Может кто-нибудь покажет мне, как включить этот файл javascript в мой плагин wordpress. Я пробовал все методы wp_enqeue_script(), но ничего не происходит.

ok вот мой пример кода плагина с комментариями, объясняющими, что я хотел бы.

<?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.
*/
?>

это popup.js

<script type="text/javascript">

function popup(){


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

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

Знает ли кто-нибудь, как этот script корректно работать в плагине Wordpress?

Ответы

Ответ 1

Вам нужно указать, когда произойдет загрузка, попробуйте это.

<?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__ ));
}

Кроме того, в вашем JS есть ошибки, но я видел правильную версию в некоторых ответах, надеюсь, что это поможет

Обновление: есть крючок, называемый wp_enqueue_scripts, как упоминается @brasofilo, который следует использовать вместо init для загрузки скриптов.

Ответ 2

Обучение работе в структуре WP может расстраивать.

И, научиться вводить javascript может быть еще более неприятным.

Итак, все здесь сделали что-то ценное, однако вам нужно собрать все это вместе. Итак:

Во-первых:
Удалите строку включения. Вам это не нужно.

Во-вторых:
Убедитесь, что переменная $src в вашем коде на самом деле является правильным путем. Я бы добавил:

echo $src;

Чтобы проверить правильность местоположения.

В-третьих: Aghoshx правильный - вы ДОЛЖНЫ иметь ссылку на крючок:

add_action('init','popup');

(Так как вы назвали всплывающее окно функции, то, что я вложил - ОДНАКО, чтобы предотвратить сортировку имен функций с другими функциями и плагинами WP, я повторяю, что вы меняете его на нечто более уникальное, например, предложенное aghoshx)

Четвертый: Убедитесь, что ваш script ЗАГРУЖЕН. После того, как вы выполните шаги 1-3 выше, перейдите к обновлению страницы WP и выполните "источник просмотра". Найдите файл script. Если вы находитесь в Firefox, вы можете на самом деле щелкнуть по URL-адресу, и он будет загружать его, если вы в IE, а затем скопируйте URL-адрес в строку url и посмотрите, действительно ли ваш файл есть (если это так, Если NOT, то он НЕ загружает файл правильно, и вам нужно исправить путь, который вы устанавливаете, в переменную $src).

Пятое: После того, как вы получите вышеупомянутое гвоздь, циллоз прав - вам нужно удалить все, кроме функции javascript (вы даже удалите теги) из файла javascript.

Наконец: посмотрите на Martti Laines, ответьте - вам нужно связать событие, используя его предложенный window.addEventListener, ИЛИ ELSE изменить тег в вашем шаблоне php, чтобы он содержал onload = "popup" (как и в файле script).

Один из последних предложений:

jQuery многое делает намного проще. Очень легко привести jQuery в ваш плагин WP. Просто добавьте это в свою popup-функцию php:

enqueue_script('jquery');

Удачи!

Ответ 3

popup.js должен содержать только код JavaScript, без HTML. Попробуйте это (в popup.js)

function popup(){
   alert('hello there this is a test popup');
}
window.addEventListener('load',function(event){popup();},false);

Или просто это:

window.addEventListener('load',function(event){
   alert('hello there this is a test popup');
},false);

Ответ 4

Вы включаете HTML в свой .js файл, и вы никогда не добавляли точку с запятой в конец предупреждения(). Может быть, попробуйте просто иметь это в вашем popup.js:

function popup(){

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

}

И затем в вашем HTML добавьте тег onload="popup()" в тег body.