为什么wordpress找不到我的javascript文件?为什么';我的javascript文件不能刷新吗?
我通过为什么wordpress找不到我的javascript文件?为什么';我的javascript文件不能刷新吗?,wordpress,Wordpress,我通过wp\u enqueue\u script() 功能 我将文件放在主题文件夹/js/my javascript.js 但是wordpress找不到它!我会在wordpress插入的html源代码中看到脚本标记,但单击它会将我带到“未找到页面”。我到处看看这是否是缓存问题。关闭缓存,仍然没有任何内容 最后,我将my-javascript.js文件放在主题的根文件夹中,而不是“js”文件夹中。现在我的js文件被找到并加载 但是现在我不明白一个新问题。。我会编辑我的文件,更改不会反映!每次我进行
wp\u enqueue\u script()
功能
我将文件放在主题文件夹/js/my javascript.js
但是wordpress找不到它!我会在wordpress插入的html源代码中看到脚本标记,但单击它会将我带到“未找到页面”。我到处看看这是否是缓存问题。关闭缓存,仍然没有任何内容
最后,我将my-javascript.js文件放在主题的根文件夹中,而不是“js”文件夹中。现在我的js文件被找到并加载
但是现在我不明白一个新问题。。我会编辑我的文件,更改不会反映!每次我进行更改时,我都必须更改js文件的文件名,并在我的enqueue脚本函数中重命名该文件……我只是想完成这项任务
那么为什么会发生这种情况呢?该网站托管在dreamhost上,我怀疑他们使用了一键式安装程序。dreamhost是否自行进行某种缓存?这就是为什么
我是哑巴吗?还是wordpress知道我讨厌它
编辑:
这就是我加载脚本的方式,也是我让它工作的方式,但是为什么我的脚本在我进行更改时不能刷新,为什么我将它放在theme的“js”文件夹中时不能工作
/* Add floater script */
function add_floater_div_script(){
/* wp_enqueue_script( 'script', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true); */
if ( is_page(1208) ) {
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js', array('jquery'), '', true);
}
}
add_action( 'wp_enqueue_scripts', 'add_floater_div_script' );
编辑:将代码从“数组”更改为“数组”因为有人认为这是一个问题。我自己做了一个快速检查,PHP对这个空间没有问题,所以这并不能解释我试图解决的wordpress奇怪的行为。我看到的最常见的问题是文件排队的方式有错误。你能在functions.PHP文件中发布让JS文件排队的代码吗?一定要确定参考法典和其他开发商材料: 作为将来的参考,它应该是这样的:
wp_enqueue_script( 'script', get_template_directory_uri() . '/js/my-javascript.js');
编辑:OP发布了他们的代码后,我看到他们的数组后面有一个空格,这导致了一个错误,下面是正确的代码:
function add_floater_div_script() {
if ( is_page( 1208 ) ) {
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js', array( 'jquery' ), '1.0.0', true );
}
}
add_action( 'wp_enqueue_scripts', 'add_floater_div_script' );
尝试将您的排队操作包装到一个函数中,您将在设置主题后调用该函数
<?php
add_action( 'after_setup_theme', 'yourtheme_theme_setup' );
if ( ! function_exists( 'yourtheme_theme_setup' ) ) {
function yourtheme_theme_setup() {
add_action( 'wp_enqueue_scripts', 'yourtheme_scripts' );
}
}
if ( ! function_exists( 'yourtheme_scripts' ) ) {
function yourtheme_scripts() {
if ( is_page( 1208 ) ) {
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js', array( 'jquery' ), '', true );
}
}
}
这是在wordpress中导入js的正确方法。是的,缓存非常烦人,虽然硬重新加载应该可以解决这个问题,但我们不能期望客户端每次都这样做。wordpress添加了一种方法来解决这个问题:)
wp\u enqueue\u脚本
接受第四个参数作为版本号
所以每次更新后只需更新版本
对于开发,只需将其设置为time()
…以便每次都重新加载它,而不会缓存它
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js', array('jquery'), time(), true);
您的代码将如下所示
/* Add floater script */
function add_floater_div_script(){
/* wp_enqueue_script( 'script', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true); */
if ( is_page(1208) ) {
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js', array('jquery'), time(), true);
}
}
add_action( 'wp_enqueue_scripts', 'add_floater_div_script' );
确保从生产版本中删除time()
。
或者您的文件将永远不会被浏览器缓存…只需在开发完成后设置主题的版本,这样每个新版本都会得到JS更新。防止缓存加载的资源文件(如Javascript文件)的一个非常简单的方法是在要包含的文件名后添加一个随机值,如下所示:
wp_enqueue_script( 'custom-floater', get_template_directory_uri() . '/custom-floater-8.js' . '?' . rand(), array('jquery'), '', true);
PHP函数
rand()
生成一个随机数,并作为查询字符串附加到文件名的“?”后面。这将强制在每次加载网页时重新加载文件
当然,对于生产版本,可以忽略它。有时,问题可能很简单,例如enqueue_脚本名称的重复声明
wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/custom-floater-
8.js', array('jquery'), '', true);
...
wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/custom-floater-
8.js', array('jquery'), '', true);
例如,不要使用两次相同名称的“自定义脚本”。第二个脚本将不会被加载。我已经编辑了问题并包含了排队代码。请看一看,看我是否做错了什么。我已经看过开发人员资料。@8oh8好的,看起来数组后面只有一个空格–我将编辑我的答案以显示正确的结果ct代码,但它应该是数组('jquery')而不是数组('jquery'))嗨,Bezier,运行了测试,当数组和左括号之间有空格时,PHP不会引发解析错误。我会编辑我的帖子,这样其他人就不会这么想。他正在将文件排成正确的队列…是缓存导致了问题…应该通过在每次编辑后更新版本号来解决…在开发过程中…time()
可以设置为每次重新加载的版本;)在我看来就像是缓存问题。尝试将版本号添加到wp_排队_脚本()。它应该像wp\u enqueue\u脚本('custom floter',get\u template\u directory\u uri()。/custom-flotter-8.js',array('jquery'),'1.2',true)你确定吗?我还试图通过url直接访问javascript文件,并更改wordpress在=字符后添加的最后一个数字。hxxp://wordpress-site.org/wp-content/themes/my-theme/custom-floater-8.js?ver=4.6.1 我试图删除“?ver=4.6.1”部分并直接访问该文件。也尝试过修改数字,但仍然不起作用。为什么我必须检查函数是否不存在?这只是一种安全预防措施,不是强制性的,但可以防止意外调用同一函数两次。这主要是推荐给插件的,但我知道他们在最开始的时候就要求这样做,所以我一直在想…好吧,我今晚要试试,看看是不是这样。这不是必需的。。。我们只需要这样做,如果我们想覆盖(或删除)一个插件的主题挂钩/功能…我认为这是最好的答案,但还没有尝试过。我会选择它,因为奖励赏金的时间已经不多了。我已经完成了wordpress的工作,所以我真的没有动力进入他们的FTP并进行测试,但我会将其添加到我的笔记中,下次一定会尝试。这似乎是有道理的,因为我在其他框架上也遇到过这个问题。编辑:也是因为通过传递time()来生成唯一的脚本版本号的解决方案。不缓存脚本是一个糟糕的主意,顺便说一句,它将
wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/custom-floater-
8.js', array('jquery'), '', true);
...
wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/custom-floater-
8.js', array('jquery'), '', true);