2012-02-04 3 views
14

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

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

<?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> 

Так ли кто-нибудь знает, как назвать этот скрипт для корректной работы в WordPress плагин?

ответ

26

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

<?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, но я видел правильный вариант в некоторых ответах, надеюсь, что это помогает

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

+0

, я попробовал это, –

+0

У вас должен быть ваш js-файл с именем ava_test_.js и поместить его в папку js в вашем каталоге плагинов, вы сделали это? – aghoshx

+1

Исправлено 'add_action ('wp_enqueue_scripts', ' ava_test_init '); ' – brasofilo

0

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

function popup(){ 

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

} 

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

+0

Я это сделал. еще такой же проблема. –

0

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); 
+0

Спасибо за помощь Мартти, но та же проблема все еще возникает. Ничего не происходит, когда я вызываю скрипт, используя wp_enqeue_script, и когда я использую include(), он работает, но плагин активируется с ошибкой. Должен быть способ .. :( –

+0

Проверьте консоль ошибок JavaScript. Любые ошибки? Также проверьте из сгенерированного исходного кода, что фактически создан сценарий-тег, и указав на точный 'popup.js' –

2

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

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

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

Первый:
Удалите свою линию включения. Тебе это не нужно.

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

echo $src; 

ИСПЫТАНИЕ, если место правильное.

Третье: Aghoshx правильно - вы должны иметь ссылку на крючок:

add_action('init','popup'); 

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

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

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

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

Один последний бит внушения:

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

enqueue_script('jquery'); 

Удачи вам!

+0

Спасибо Cale_b. всегда полезно и там для нас ... спасибо, даст ему шанс, а затем сообщит вам, что я придумал. :) –