我正试图从我的插件php中对一个外部纯JavaScript文件进行排队,以添加到WP主题的页脚中。这可能吗?
我试过下面的,但测试失败了,因为没有发出警报。。。
<?php
/**
Plugin Name: Add Footer JS
*/
add_action( 'wp_footer', 'my_footer_scripts' );
function my_footer_scripts(){
?>
<script>alert( 'Hi Roy' ); </script> // just a test
<?php
}
所以基本上;JS将位于:
http://dev.website.com/wp-content/plugins/mykewlplugin/js/script-support.js
这个PHP,位于:
http://dev.website.com/wp-content/plugins/mykewlplugin/support.php
核心插件PHP/功能位于:
http://dev.website.com/wp-content/plugins/mykewlplugin/mykewlplugin.php
确保您当前活动的主题正在使用wp_footer()
和wp_head()
函数,因为它们是使用适当的操作挂钩所必需的。话虽如此,你真的应该妥善安排你的资产。任何参与该项目的人(包括你未来的自己(都会对此表示赞赏!
这涉及到使用wp_enqueue_scripts
钩子和wp_enqueue_script()
函数(它依赖于wp_head()
和wp_footer
函数(。
正确的方法如下:
add_action( 'wp_enqueue_scripts', 'no_spex_footer_js' );
function no_spex_footer_js(){
wp_enqueue_script( 'no-spex-footer-js', '/path/to/your/file.js', array(), null, true );
}
注意所有传递的参数,按顺序:
- 一个唯一句柄
- 实际文件的路径
- 按句柄排列的依赖项数组(如果您依赖jQuery,请将其更改为
array('jquery')
,等等 - 文件的版本。我通常使用
filemtime( plugin_dir_path( __FILE__ ) . 'assets/file-name.js'
- in_footer-这是最重要的一个,它决定了文件应该加载到页眉还是页脚
如果你确定你的主题使用了wp_head()
和wp_footer()
,而文件不起作用——这意味着你的插件没有正确配置/激活,那么我建议你再粗略地看一眼"编写插件"文档和"文件头要求"。
对于你的具体情况,应该这样做:
mykewlplugin.php:
<?php
/**
* Plugin Name: My Kewl Plugin
* Description: Does Kewl Things
* Version: 0.1
*/
add_action( 'wp_enqueue_scripts', 'my_kewl_plugin_footer_js' );
function my_kewl_plugin_footer_js(){
wp_enqueue_script( 'my-kewl-plugin-footer', plugins_url( '/js/script-support.js', __FILE__ ), array(), filemtime( plugin_dir_path( __FILE__ ) . 'js/script-support.js', true );
}
?>