theme path in javascript file

时间:2013-03-07 作者:charlenemasters

我需要在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(); ?> 而不是实际路径。有什么想法吗?提前感谢!

6 个回复
最合适的回答,由SO网友:david.binda 整理而成

你要找的是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 );
以你的风格。js,将会有:

var templateUrl = object_name.templateUrl;
...

SO网友:Vinod Dalvi

These are the following two ways to add theme path in javascript file.

1) 您可以使用wp_localize_script() 由wordpress在您的函数中建议。php文件。这将在标题中创建一个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) 您可以创建一个Javascript片段,将模板目录uri保存在一个变量中,然后按如下方式使用它:在标头中添加此代码。要使用此路径的js文件之前的php文件。示例:

<script type="text/javascript">
var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>";
</script>
可以在js文件中使用,如下所示:

alert(stylesheet_directory_uri);

SO网友:Mike Madern

您可以本地化javascript文件,这使您有机会生成一个由PHP定义的值(如本地化或目录)填充的javascript数组。

如果您通过wp_enqueue_scriptwp_register_script 设置起来很容易,如下所示:

function localize_vars() {
    return array(
        \'stylesheet_directory\' => get_stylesheet_directory_uri()
    );
}

wp_enqueue_script( \'my_script\', plugins_url( \'my_plugin/my_script.js\' ), array( \'jquery\' ) );
wp_localize_script( \'my_script\', \'my_unique_name\', localize_vars() );
在javascript文件中,可以通过以下方式调用这些变量:

my_unique_name.stylesheet_directory

SO网友:blizzrdof77

我开始使用这个方便的小方法来获取WordPress主题目录,并将其存储为全局JavaScript变量(全部来自JavaScript文件):

function getThemeDir() {
    var scripts = document.getElementsByTagName(\'script\'),
        index = scripts.length - 1,
        myScript = scripts[index];

    return myScript.src.replace(/themes\\/(.*?)\\/(.*)/g, \'themes/$1\');
}
themeDir = getThemeDir();
仅当满足以下条件时,此操作才起作用:

    ;1. 此代码段通过外部JavaScript文件执行,如下所示:

<script src="/wp-content/themes/themename/assets/app.js"></script>
nbsp   ;2. js文件位于站点的主题目录(或子目录)中。

SO网友:takasoft

我就是这样做的。

将javascript文件和图像放置在主题文件夹/资源中

并编辑以下文件。

在函数中。php

/* for javascript (only when using child theme) */
wp_enqueue_script(\'my-script\', get_template_directory_uri() . \'-child/assets/test.js\');
wp_localize_script(\'my-script\', \'myScript\', array(
    \'theme_directory\' => get_template_directory_uri() 
));
在javascript文件中

var url = myScript.theme_directory + \'-child/assets/\';

SO网友:Clay Risser

如果javascript文件是从管理仪表板加载的,则可以使用此javascript函数获取WordPress安装的根目录。

function getHomeUrl() {
  var href = window.location.href;
  var index = href.indexOf(\'/wp-admin\');
  var homeUrl = href.substring(0, index);
  return homeUrl;
}
然后只需联系下面的主题路径即可。

var myThemePath = getHomeUrl() + \'/wp-content/themes/myTheme\';

结束

相关推荐

WordPress不显示wp-Content/Themes文件夹中的主题

我会尽我所能解释这一点,但至少可以说这很奇怪。因此,两个默认主题(210和2111)出现在wp admin的外观>主题选项卡下。但是,如果我向wp内容/主题添加一个新主题(即使只是一个空文件夹),则除了当前使用的主题之外,所有主题都无法显示在“外观”>“主题”选项卡上。有人有什么想法吗?--这是在LAMP服务器上(Ubuntu 12.04)。