404当使用plugin_url入队脚本时

时间:2017-03-21 作者:heliotrope

因此,我通过以下方式将脚本添加到我的网站functions.php 位于插件目录中。代码非常简单:

function add_jq_script() {
      wp_register_script(\'r_footer\', plugins_url(\'/responsiveFooter.js\', __FILE__), array(\'jquery\'),\'1.1\', true);
     wp_enqueue_script(\'r_footer\');
 } 

add_action( \'wp_enqueue_scripts\', \'add_jq_script\', 999 ); 
这些插件似乎在本地站点上工作,但在开发控制台中,我得到了一个404,它似乎包含了我的站点url和插件的绝对url:http://localhost/~thisuser/wordpress/wp-content/plugins/Users/thisuser/Sites/wordpress/wp-content/themes/liberty/responsiveFooter.js?ver=1.1

我对wordpress有点陌生,url应该是http://localhost/~thisuser/wordpress/wp-content/plugins/responsiveFooter.js

是否有一些可湿性粉剂的选择,我需要改变或一些插件设置的地方来解决这个问题?

2 个回复
最合适的回答,由SO网友:Ian 整理而成

plugins_url 将输出WordPress安装中插件目录的绝对文件路径。

这当然不适用于调用脚本的客户端(浏览器)。

要从插件目录访问脚本,您需要使用plugin_dir_url() 这将为您获取插件目录的url。

Some things to note about plugin_dir_url()

  • 您需要指定脚本所在的插件名称目录。函数输出包含一个尾部斜杠,因此不需要连接斜杠
假设您的插件名为“my\\u plugin”,并且脚本位于“js”目录中,您的脚本注册将如下所示:

wp_register_script(\'r_footer\', plugins_dir_url() . \'my_plugin/js/responsiveFooter.js\', array(\'jquery\'),\'1.1\', true);
注意省略__FILE__ 它将输出当前文件的绝对路径(不是您想要的)。

如果脚本位于活动主题中,则需要使用其他功能:get_stylesheet_directory_uri

Some things to note about get_stylesheet_directory_uri

<它需要一个尾部斜杠,不像plugin_dir_url()i 不是你l因此,假设您的主题名为“my\\u theme”,javascript位于“js”文件中,您的注册脚本如下所示:

wp_register_script(\'r_footer\', get_stylesheet_directory_uri() . \'/my_theme/js/responsiveFooter.js\', array(\'jquery\'),\'1.1\', true);
<小时>

Links to documentation:

SO网友:mukto90

您在中使用了错误的可调用函数add_action(). 您的代码应该是这样的-

function add_jq_script() {
      wp_register_script(\'r_footer\', plugins_url(\'/responsiveFooter.js\', __FILE__), array(\'jquery\'),\'1.1\', true);
     wp_enqueue_script(\'r_footer\');
 } 

add_action( \'wp_enqueue_scripts\', \'add_jq_script\', 999 ); 
此外,根据您的代码,您需要responsiveFooter.jsfunctions.php 同一目录中的文件。

UPDATE:

请改用此代码。粘贴到您的functions.php-

function add_jq_script() {
    wp_register_script(\'r_footer\', plugins_url( \'/responsiveFooter.js\' ), array( \'jquery\' ), \'1.1\', true );
    wp_enqueue_script(\'r_footer\');
 } 

add_action( \'wp_enqueue_scripts\', \'add_jq_script\', 999 );