如何在Wordpress插件中加载Javascript

时间:2012-02-04 15:19:03

标签: php javascript wordpress wordpress-plugin

有人可以告诉我如何将这个javascript文件包含到我的wordpress插件中。我已经尝试了所有wp_enqeue_script()方法但没有任何反应。

好的,这是我的示例插件代码,其中的注释解释了我想要的内容。

<?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插件中正常工作吗?

4 个答案:

答案 0 :(得分:31)

您需要指定加载何时发生,请尝试此操作。

<?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中存在错误,但我在某些答案中看到了正确的版本,希望这有帮助

更新:@brasofilo提到了一个名为wp_enqueue_scripts的钩子,它应该用来代替init来加载脚本。

答案 1 :(得分:2)

学习在WP结构中工作可能会令人沮丧。

而且,学习引入javascript会更令人沮丧。

所以,这里的每个人都贡献了一些有价值的东西,但是你需要将它们整合在一起。所以:

第一:
删除包含行。你不需要它。

第二:
确保代码中的$ src变量实际上是正确的路径。我想补充一句:

echo $src;

要测试位置是否正确。

第三: Aghoshx是正确的 - 你必须有钩子参考:

add_action('init','popup');

(因为你命名了函数弹出窗口,这就是我放入的东西 - 但是,为了防止函数名称与其他WP函数和插件相关,我建议你把它改成更独特的东西,比如提出的aghoshx)

第四: 检查您的脚本是否已加载。完成上述步骤1-3后,再刷新WP页面并执行“查看源”。查找您的脚本文件。如果您使用的是Firefox,您实际上可以点击该网址并将其加载 - 如果您在IE中,则将网址复制粘贴到网址栏中,看看实际上您的文件是否为THERE(如果是,则为loading。如果不是,那么它没有正确加载文件,你需要修改你设置的路径到$ src变量。)

第五: 一旦你得到上面的钉子,cillosis是正确的 - 你需要从javascript文件中删除一切但是javascript函数(你甚至删除了标签)。

最后: 看看Martti Laines的答案 - 你需要使用他建议的window.addEventListener绑定事件,或者ELSE修改你的php模板中的标签以包含onload =“popup”(就像你在脚本文件中那样)。

最后一点建议:

jQuery让很多东西变得更容易。将jQuery引入WP插件非常容易。只需在你的php弹出功能中添加它:

enqueue_script('jquery');
祝你好运!

答案 2 :(得分:-1)

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

答案 3 :(得分:-2)

您在.js文件中包含HTML,并且您从未在alert()的末尾添加分号。也许试试你的popup.js:

function popup(){

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

}

然后在您的HTML中将onload="popup()"添加到正文标记。