자바 스크립트 파일의 테마 경로


15

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(); ?>실제 경로 대신 삽입 합니다. 어떤 아이디어? 미리 감사드립니다!

답변:


32

당신이 찾고있는 것은 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;
...

대박. 매력처럼 일했다!
James Hall

6

자바 스크립트 파일에 테마 경로를 추가하는 다음 두 가지 방법이 있습니다.

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 스 니펫을 작성하고 다음과 같이 나중에 사용할 수 있습니다.이 경로를 사용하려는 js 파일 앞에 header.php 파일에이 코드를 추가하십시오. 예:

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

다음과 같이 js 파일에서 사용할 수 있습니다.

alert(stylesheet_directory_uri);

wp_localize가 작동합니다! 나는 두 번째 접근법도 시도했지만 제대로 작동 시키지는 못했습니다. wp_localize 작품이 더 나은 연습 일 것입니다.
charlenemasters

@charlenemasters는 두 번째 접근법이 변수를 선언하고 액세스하는 순서대로 작동하게 만드는 것이 매우 중요합니다.
Vinod Dalvi

2
두 번째 접근 방식은 함께해야 echo일하기 위해
Claudiu Creanga

: @ClaudiuCreanga 덕분에, 에코해야 var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>";
ycc_swe

1

자바 스크립트 파일을 현지화 할 수 있습니다. 즉, 현지화 또는 디렉토리와 같은 PHP 정의 값으로 채워진 자바 스크립트 배열을 생성 할 수 있습니다.

자바 스크립트 파일을 저장 wp_enqueue_script하거나 wp_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() );

그리고 자바 스크립트 파일에서 다음을 통해 이러한 변수를 호출 할 수 있습니다.

my_unique_name.stylesheet_directory

1

이 편리한 작은 방법을 사용하여 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>

    2. js 파일은 사이트의 테마 디렉토리 (또는 서브 디렉토리)에 있습니다.


1

이것이 내가 한 방법입니다.

테마 폴더 / 자산에 자바 스크립트 파일 및 이미지 배치

다음 파일을 편집하십시오.

functions.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() 
));

자바 스크립트 파일에서

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

0

자바 스크립트 파일이 관리 대시 보드에서로드 된 경우이 자바 스크립트 함수를 사용하여 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';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.