如何在插件中加入JavaScript


14

这次我很努力地尝试在插件文件夹中包含JavaScript文件。

我正在尝试通过从主题目录传输窗口小部件文件来创建插件。我复制了窗口小部件文件,但是该窗口小部件文件取决于JavaScript文件,因此我在插件目录中创建了/ js /文件夹。该文件的托管位置“ jquery.repeatable.js”

我使用了这段代码,但似乎没有包含js文件-

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

我在论坛上搜索了此内容-https : //stackoverflow.com/questions/31489615/call-a-js-file-from-a-plugin-directory

但这仍然没有帮助。

我正在重新总结我的问题。在我的插件目录中,此文件夹下有一个js文件-/ js /

我希望包含它是正确的过程,我还需要注册一些东西吗?

这部分有什么问题'admin_enqueue_scripts'吗?


Answers:


30

您的代码似乎是正确的,但怎么一回事,因为你是在排队脚本只会在管理区域加载脚本admin_enqueue_scripts动作

要在前端加载脚本,请使用wp_enqueue_scriptsaction(与wp_enqueue_script()function不同):

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

另外,该脚本似乎依赖于jQuery,因此您应声明依赖关系或该脚本可以在jQuery之前加载,并且该脚本不起作用。另外,我强烈建议声明该scripot的版本。这样,如果将脚本更新为新版本,浏览器将再次卸载该脚本并丢弃其可能在缓存中拥有的副本。

例如,如果脚本的版本是1.0:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

如果要在管理区域中加载它:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

1

更新:

改用此代码

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

第三个参数是声明依赖关系,第四个参数是定义版本。

将的第5个参数设置wp_enqueue_script()true。就是说,此文件将以页脚加载。


的第三个参数wp_enqueue_script()是声明脚本依赖项。如果要在脚注或页眉中加载脚本,则可以选择第五个参数。无论如何,我认为加载的位置没有任何区别。
cybmeta '16

谢谢。我在其他插件的某处读到某人正在这样做-wp_enqueue_script('zumper',get_template_directory_uri()。'/js/jquery.zumper.min.js',array('jquery'),false,true); 您说将3rd设置为true意味着它将在页脚中加载,那么这个false,true组合意味着什么?
WP中级

我已经更新了答案。它行得通吗?
mukto90 '02

1

我通常使用plugins_url()方法来实现入队。

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugins_url('js/jquery.repeatable.js', __FILE__ ), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.