js脚本文件中的WordPress路径URL

Cam*_*Cam 45 javascript wordpress wordpress-theming

我添加了自定义脚本:

wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false);
Run Code Online (Sandbox Code Playgroud)

它很棒,除了functions.js我有:

Reset.style.background = "url('../images/searchfield_clear.png') no-repeat top left";
Run Code Online (Sandbox Code Playgroud)

这曾经以前工作过,直到我改为非常永久链接和.htaccess

文件夹层次结构如下:

themename/js themename/images (图像和js文件夹位于theameame文件夹中)

我试过../images - ./image - /images

通常它应该返回到js文件所在的任何位置的1级....

我不想使用完整路径.

WordPress是否有另一种方法可以在javascript文件中识别出正确的路径?

目前我很困惑我做错了什么.

Chr*_*ris 101

根据Wordpress文档,您应该wp_localize_script()在functions.php文件中使用.这将在标头中创建一个Javascript对象,在运行时可供脚本使用.

食典委

例:

<?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' => get_option('siteurl') )); ?>
Run Code Online (Sandbox Code Playgroud)

要在Javascript中访问此变量,您只需执行以下操作:

<script type="text/javascript">
    var url = WPURLS.siteurl;
</script>
Run Code Online (Sandbox Code Playgroud)

  • 也许应该提到文档中的这个注释:**重要!**`wp_localize_script()``必须在使用``wp_register_script()``或``wp_enqueue_script()注册脚本后调用*``. (13认同)

AJJ*_*AJJ 66

您可以通过在模板的标题中设置JS变量来避免硬编码完整路径,然后wp_head()调用模板URL.喜欢:

<script type="text/javascript">
var templateUrl = '<?= get_bloginfo("template_url"); ?>';
</script>
Run Code Online (Sandbox Code Playgroud)

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

Reset.style.background = " url('"+templateUrl+"/images/searchfield_clear.png') ";
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案工作正常,但在大多数情况下克里斯答案是可取的 - 我不知道wp_localize_script()的存在. (6认同)

kei*_*ics 23

    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 );
Run Code Online (Sandbox Code Playgroud)

并在custom.js

alert(wnm_custom.template_url);
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是一篇旧文章,但是要获取子主题URL,请使用“ get_stylesheet_directory_uri()”而不是“ get_bloginfo('template_url')”。 (2认同)

Jam*_*ser 6

如果 javascript 文件是从管理仪表板加载的,则此 javascript 函数将为您提供 WordPress 安装的根目录。当我构建需要从管理仪表板发出 ajax 请求的插件时,我经常使用它。

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