我添加了自定义脚本:
wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false);
效果很好, 除了在functions.js中我有:
Reset.style.background = "url('../images/searchfield_clear.png') no-repeat top left";
这以前曾经起作用, 直到我更改为漂亮的永久链接和.htaccess。
文件夹层次结构类似于:
themename / js themename / images(图像和js文件夹位于themename文件夹中)我尝试了../images-./image-/ images
通常, 无论js文件位于何处, 它都应返回1级。
我不想使用完整路径。
WordPress可以通过另一种方法识别javascript文件中的正确路径吗?
目前, 我只是对自己在做错的事情感到困惑。
#1你可以通过在调用wp_head()之前保持模板URL的模板标题中设置一个JS变量来避免对完整路径进行硬编码。喜欢:
<
script type="text/javascript">
var templateUrl = '<
?= get_bloginfo("template_url");
?>
';
<
/script>
并使用该变量设置背景(我知道你知道该怎么做, 我只包括这些详细信息, 以防它们对其他人有所帮助):
Reset.style.background = " url('"+templateUrl+"/images/searchfield_clear.png') ";
#2根据Wordpress文档, 你应该在functions.php文件中使用wp_localize_script()。这将在标头中创建一个Javascript对象, 该脚本对象将在运行时可供你使用。
参见法典
例子:
<
?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' =>
get_option('siteurl') ));
?>
要在Javascript中访问此变量, 只需执行以下操作:
<
script type="text/javascript">
var url = WPURLS.siteurl;
<
/script>
#3
wp_register_script('custom-js', WP_PLUGIN_URL.'/PLUGIN_NAME/js/custom.js', array(), NULL, true);
wp_enqueue_script('custom-js');
$wnm_custom = array( 'template_url' =>
get_bloginfo('template_url') );
wp_localize_script( 'custom-js', 'wnm_custom', $wnm_custom );
和在custom.js中
alert(wnm_custom.template_url);
#4如果从管理控制台加载了javascript文件, 则此javascript函数将为你提供WordPress安装的根目录。在构建需要从管理仪表板发出Ajax请求的插件时, 我会经常使用它。
function getHomeUrl() {
var href = http://www.srcmini.com/window.location.href;
var index = href.indexOf('/wp-admin');
var homeUrl = href.substring(0, index);
return homeUrl;
}
#5适用于使用Genesis框架的用户。
将以下内容添加到你的子主题functions.php中
add_action( 'genesis_before', 'script_urls' );
function script_urls() {
?>
<
script type="text/javascript">
var stylesheetDir = '<
?= get_bloginfo("stylesheet_directory");
?>
';
<
/script>
<
?php
}
【js脚本文件中的WordPress路径URL】并使用该变量在脚本中设置相对网址。例如:
Reset.style.background = " url('"+stylesheetDir+"/images/searchfield_clear.png') ";
推荐阅读
- WordPress页面模板选项未显示在仪表板中()
- WordPress分页不起作用
- WordPress的页面slug与媒体库项冲突
- wordpress输出额外的html代码
- WordPress(在子主题中覆盖父主题类函数)
- WordPress.org主题提交
- 阿里云镜像OpenSUSE全新安装并更改阿里OpenSUSE镜像源?
- wireshark启动报错 由于找不到msvcp140.dll无法继续执行代码
- 音响DSP|ENC降噪DSP|USB麦克风芯片|USB耳机芯片|TYPE-C麦克风芯片|192K/24位耳机芯片