如何在Wordpress插件中加载Javascript

Ron*_*bet 17 javascript php 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.
*/
?>
Run Code Online (Sandbox Code Playgroud)

这是popup.js

<script type="text/javascript">

function popup(){


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

}
</script>
<body onload="popup()">
</body>
Run Code Online (Sandbox Code Playgroud)

那么有谁知道如何调用这个脚本在wordpress插件中正常工作?

agh*_*shx 36

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

<?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__ ));
}
Run Code Online (Sandbox Code Playgroud)

此外,您的JS中存在错误,但我在某些答案中看到了正确的版本,希望这会有所帮助

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


ran*_*ame 5

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

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

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


第一的:

删除您的包含行。你不需要它。

第二:

确保代码中的 $src 变量实际上是正确的路径。我想添加一个:

    echo $src;
Run Code Online (Sandbox Code Playgroud)

测试位置是否正确。

第三:

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

    add_action('init','popup');
Run Code Online (Sandbox Code Playgroud)

(既然你命名了函数 popup,这就是我放入的内容 - 但是,为了防止函数名称与其他 WP 函数和插件冲突,我建议你将其更改为更独特的名称,例如 aghoshx 提出的)

第四:

检查您的脚本是否正在加载。完成上述步骤 1-3 后,刷新 WP 页面并执行“查看源代码”。查找您的脚本文件。如果你在 Firefox 中,你实际上可以单击 url,它会加载它 - 如果你在 IE 中,则将 url 复制粘贴到 url 栏中,看看你的文件是否确实存在(如果是,则它是如果不是,那么它没有正确加载文件,您需要修复您在 $src 变量中设置的路径)。

第五:

一旦你搞清楚了上面的内容,纤毛病就是对的——你需要从 javascript 文件中删除除 javascript 函数之外的所有内容(甚至删除标签)。

最后:

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

最后一点建议:

jQuery 让很多事情变得更加容易。将 jQuery 引入您的 WP 插件非常容易。只需将其添加到您的 php 弹出函数中:

    wp_enqueue_script('jquery');
Run Code Online (Sandbox Code Playgroud)

祝你好运!