javascript dosyasında tema yolu


15

Bir javascript dosyası içinde benim tema dosyasının yolunu eklemeniz gerekir. Bunu nasıl yapardım? Zaten denedim:

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";
}

Bu bana yolu vermez, sadece <?php get_stylesheet_directory_uri(); ?>asıl yol yerine ekler . Herhangi bir fikir? Şimdiden teşekkürler!

Yanıtlar:


33

Aradığınız şey wp_localize_script fonksiyonudur .

Senaryoyu sıkarken böyle kullanıyorsun

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 dosyasında şunlar olacaktır:

var templateUrl = object_name.templateUrl;
...

müthiş. bir cazibe gibi çalıştı!
James Hall

6

Javascript dosyasına tema yolu eklemenin aşağıdaki iki yolu vardır.

1) kullanabilirsiniz wp_localize_script () functions.php dosyasına wordpress tarafından önerdi. Bu, başlıkta çalışma zamanında komut dosyalarınız tarafından kullanılabilecek bir Javascript Nesnesi oluşturur.

Misal :

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 );

ve js dosyanızda aşağıdaki gibi kullanabilirsiniz:

alert(directory_uri.stylesheet_directory_uri); 

2) uri şablon dizinini bir değişkene kaydeden bir Javascript snippet'i oluşturabilir ve daha sonra aşağıdaki gibi kullanabilirsiniz: Bu kodu, bu yolu kullanmak istediğiniz js dosyasından önce header.php dosyasına ekleyin. Misal:

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

ve js dosyanızda aşağıdaki gibi kullanabilirsiniz:

alert(stylesheet_directory_uri);

wp_localize çalışıyor! Ben de 2. yaklaşımı denedim ama işe yaramadı. wp_localize çalışmaları muhtemelen daha iyi bir uygulamadır, değil mi?
charlenemasters

@charlenemasters, ikinci yaklaşımı değişken ilan etme ve ona erişme sırasının işe yaramasını sağlamak için çok önemlidir.
Vinod Dalvi

2
echoÇalışmak için ikinci yaklaşım birlikte olmalı
Claudiu Creanga

@ClaudiuCreanga Teşekkürler, yankı olmalı: var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>";
ycc_swe

1

PHP tanımlı değerlerle (yerelleştirme veya dizinler gibi) dolu bir javascript dizisi oluşturma fırsatı veren javascript dosyalarınızı yerelleştirebilirsiniz.

Javascript dosyanızı yalak wp_enqueue_scriptveya wp_register_scriptaşağıdaki gibi kurulumu kolay yüklerseniz :

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 dosyalarınızda bu değişkenleri şu şekilde çağırabilirsiniz:

my_unique_name.stylesheet_directory

1

WordPress tema dizinini almak ve genel bir JavaScript değişkeni olarak saklamak için bu uygun küçük yöntemi kullanmaya başladım (hepsi bir javascript dosyasından):

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

    return myScript.src.replace(/themes\/(.*?)\/(.*)/g, 'themes/$1');
}
themeDir = getThemeDir();

Bu yalnızca aşağıdaki koşullar karşılandığında çalışır:

    1. Bu pasaj harici bir JavaScript dosyası üzerinden yürütülür - şöyle:

<script src="/wp-content/themes/themename/assets/app.js"></script>

    2. js dosyası, sitenizin tema dizininde (veya alt dizininde) bulunur.


1

Ben böyle yaptım.

Javascript dosyasını ve resimlerini tema klasörüne / varlıklarına yerleştirin

Ve aşağıdaki dosyaları düzenleyin.

Function.php içinde

/* 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 dosyanızda

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

0

Javascript dosyası yönetici kontrol panelinden yüklenmişse, WordPress kurulumunuzun kökünü almak için bu javascript işlevini kullanabilirsiniz.

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

Ardından, aşağıdaki gibi temanızın yolunu arayın.

var myThemePath = getHomeUrl() + '/wp-content/themes/myTheme';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.