有人可以告诉我如何将这个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插件中正常工作吗?
答案 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()"
添加到正文标记。