在js脚本文件中的WordPresspathURL

我添加了自定义脚本:

wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false); 

它工作得很好,除了在functions.js我有:

 Reset.style.background = "url('..http://img.dovov.comsearchfield_clear.png') no-repeat top left"; 

这之前一直工作,直到我改变到漂亮的固定链接和.htaccess

文件夹层次结构如下所示:

themename/js themename/images (图片和js文件夹位于主题名称文件夹中)

我试过../images – ./image – / images

通常情况下,它应该回到1级别的任何地方的JS文件位于….

我不想使用完整path。

有没有另一种方式,WordPress可以识别在JavaScript文件中有正确的path?

目前我只是混淆了我做错了什么。

wp_head()之前,通过在模板头中设置JSvariables,可以避免对完整path进行硬编码。 喜欢:

 <script type="text/javascript"> var templateUrl = '<?= get_bloginfo("template_url"); ?>'; </script> 

并使用该variables设置背景(我知道你知道如何做到这一点,我只包括这些细节,以防他们帮助其他人):

 Reset.style.background = " url('"+templateUrl+"http://img.dovov.comsearchfield_clear.png') "; 

根据WordPress的文档,你应该在你的functions.php文件中使用wp_localize_script() 。 这将在头文件中创build一个Javascript对象,这将在运行时供脚本使用。

见食典

例:

 <?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' => get_option('siteurl') )); ?> 

要在Javascript中访问这个variables,你只需要做:

 <script type="text/javascript"> var url = WPURLS.siteurl; </script> 
  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); 

如果JavaScript文件是从pipe理仪表板加载的,这个JavaScript函数会给你你的WordPress安装的根。 当我构build需要从pipe理仪表板发出ajax请求的插件时,我使用了很多。

 function getHomeUrl() { var href = window.location.href; var index = href.indexOf('/wp-admin'); var homeUrl = href.substring(0, index); return homeUrl; }