问题描述

我需要在 javascript 文件中包含我的主题文件的路径。我该怎么办?我已经尝试过:

var templateUrl = "<?php get_stylesheet_directory_uri(); ?>";

function LightboxOptions() {
  this.fileLoadingImage = "'"+templateUrl+"/img/loading.gif'";
  this.fileCloseImage = "'"+templateUrl+"/img/close.png'";
  this.resizeDuration = 700;
  this.fadeDuration = 500;
  this.labelImage = "Image";
  this.labelOf = "of";
}

这不给我的路径,只是插入<?php get_stylesheet_directory_uri(); ?> 而不是实际的路径。有任何想法吗?提前致谢!

最佳解决方案

你要找的是 wp_localize_script function

当使用脚本时,您可以使用它

wp_register_script( 'my-script', 'myscript_url' );
wp_enqueue_script( 'my-script' );
$translation_array = array( 'templateUrl' => get_stylesheet_directory_uri() );
//after wp_enqueue_script
wp_localize_script( 'my-script', 'object_name', $translation_array );

在你的 style.js 中,会有:

var templateUrl = object_name.templateUrl;
...

次佳解决方案

以下是在 javascript 文件中添加主题路径的两种方法。

1) 您可以使用您的 functions.php 文件中由 wordpress 建议的 wp_localize_script()。这将在标题中创建一个 JavaScript 对象,这将在运行时可用于您的脚本。

示例:

wp_register_script('custom-js',get_stylesheet_directory_uri().'/js/custom.js',array(),NULL,true);
wp_enqueue_script('custom-js');

$wnm_custom = array( 'stylesheet_directory_uri' => get_stylesheet_directory_uri() );
wp_localize_script( 'custom-js', 'directory_uri', $wnm_custom );

并可以在您的 js 文件中使用如下:

alert(directory_uri.stylesheet_directory_uri); 

2) 您可以创建一个将模板目录 uri 保存在变量中的 JavaScript 代码片段,并在以后使用如下:将此代码添加到 header.php 文件中,然后再使用此路径。例:

<script type="text/javascript">
var stylesheet_directory_uri = "<?php get_stylesheet_directory_uri(); ?>";
</script>

并可以在您的 js 文件中使用如下:

alert(stylesheet_directory_uri);

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。