percorso del tema nel file javascript


15

Devo includere il percorso del mio file del tema in un file javascript. Come lo farei? Ho già provato:

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

Questo non mi dà il percorso, ma inserisce solo <?php get_stylesheet_directory_uri(); ?>il percorso effettivo. Qualche idea? Grazie in anticipo!

Risposte:


32

Quello che stai cercando è la funzione wp_localize_script .

Lo usi in questo modo quando accoda lo script

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

Nel tuo style.js ci saranno:

var templateUrl = object_name.templateUrl;
...

eccezionale. ha funzionato come un fascino!
James Hall,

6

Questi sono i due modi seguenti per aggiungere il percorso del tema nel file javascript.

1) Puoi usare wp_localize_script () suggerito da wordpress nel tuo file Functions.php . Questo creerà un oggetto Javascript nell'intestazione, che sarà disponibile per i tuoi script in fase di esecuzione.

Esempio :

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

e può usare nel tuo file js come segue:

alert(directory_uri.stylesheet_directory_uri); 

2) Puoi creare uno snippet Javascript che salvi la directory dei template in una variabile e usarlo in seguito come segue: Aggiungi questo codice nel file header.php prima del file js in cui vuoi usare questo percorso. Esempio:

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

e può usare nel tuo file js come segue:

alert(stylesheet_directory_uri);

wp_localize funziona! Ho provato anche il secondo approccio, ma non sono riuscito a farlo funzionare. wp_localize funziona probabilmente è una pratica migliore, no?
Charlenemasters

@charlenemasters per far funzionare il secondo approccio nell'ordine di dichiarare variabile e accedervi è molto importante.
Vinod Dalvi,

2
il secondo approccio dovrebbe essere echoper funzionare
Claudiu Creanga,

@ClaudiuCreanga Grazie, dovrebbe essere eco: var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>";
ycc_swe

1

Puoi localizzare i tuoi file javascript, che ti dà l'opportunità di generare un array javascript pieno di valori definiti da PHP (come localizzazione o directory).

Se carichi il tuo file javascript tramite wp_enqueue_scripto è wp_register_scriptfacile da configurare come segue:

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

E nei tuoi file javascript, puoi chiamare queste variabili come:

my_unique_name.stylesheet_directory

1

Ho iniziato a utilizzare questo piccolo metodo conveniente per ottenere la directory dei temi di WordPress e archiviarla come variabile JavaScript globale (tutto da un file 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();

Funzionerà solo se sono soddisfatte le seguenti condizioni :

    1. Questo frammento viene eseguito tramite un file JavaScript esterno, in questo modo:

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

    2. Il file js risiede nella directory (o nella sottodirectory) del tema del tuo sito.


1

È così che l'ho fatto.

Posiziona il file javascript e le immagini nella cartella / risorse del tema

E modifica i seguenti file.

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

Nel tuo file JavaScript

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

0

Se il file javascript viene caricato dalla dashboard di amministrazione, è possibile utilizzare questa funzione javascript per ottenere la radice dell'installazione di WordPress.

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

Quindi basta contattare il percorso del tema come di seguito.

var myThemePath = getHomeUrl() + '/wp-content/themes/myTheme';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.