Как загрузить 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.