Themenpfad in der Javascript-Datei
6 Antworten
- Stimmen
-
- 2013-03-07
Was Sie suchen,ist die wp_localize_script-Funktion .
Sie verwendenes so,wenn Sie das Skriptin die Warteschlange stellen
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 );
In Ihrer style.js wirdes Folgendesgeben:
var templateUrl = object_name.templateUrl; ...
What you're looking for is wp_localize_script function.
You use it like this when enqueing 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 );
In your style.js, there is going to be:
var templateUrl = object_name.templateUrl; ...
-
genial. Lief wie am Schnürchen!awesome. worked like a charm!
- 0
- 2016-11-28
- James Hall
-
- 2013-03-07
Dies sind diefolgenden zwei Möglichkeiten,umeinen Themenpfadin eine Javascript-Dateieinzufügen.
1) Sie können wp_localize_script () verwenden,das von vorgeschlagen wird WordPressin Ihrer Dateifunctions.php. Dadurch wirdim Headerein Javascript-Objekterstellt,das Ihren Skripten zur Laufzeit zur Verfügung steht.
Beispiel:
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 );
und kannin Ihrerjs-Datei wiefolgt verwendet werden:
alert(directory_uri.stylesheet_directory_uri);
2) Sie könnenein Javascript-Snippeterstellen,das das Vorlagenverzeichnis uriin einer Variablen speichert,undes später wiefolgt verwenden: Fügen Sie diesen Codein der Datei header.php vor derjs-Datei hinzu,in der Sie diesen Pfad verwendenmöchten. Beispiel:
<script type="text/javascript"> var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>"; </script>
und kannin Ihrerjs-Datei wiefolgt verwendet werden:
alert(stylesheet_directory_uri);
These are the following two ways to add theme path in javascript file.
1) You can use wp_localize_script() suggested by wordpress in your functions.php file. This will create a Javascript Object in the header, which will be available to your scripts at runtime.
Example :
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 );
and can use in your js file as following :
alert(directory_uri.stylesheet_directory_uri);
2) You can create a Javascript snippet that saves the template directory uri in a variable, and use it later as following: Add this code in header.php file before the js file in which you want to use this path. Example:
<script type="text/javascript"> var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>"; </script>
and can use in your js file as following :
alert(stylesheet_directory_uri);
-
wp_localizefunktioniert!Ich habe auch den 2. Ansatz ausprobiert,aberich habeesnichtgeschafft,dassesfunktioniert.wp_localizefunktioniert wahrscheinlichbesser,oder?wp_localize works! I tried the 2nd approach, too, but I didn't manage to make it work. wp_localize works is probably better practice, no?
- 0
- 2013-03-07
- charlenemasters
-
@charlenemasters,damit der zweite Ansatzfunktioniert,ist die Reihenfolge der Deklaration der Variablen und des Zugriffs darauf sehr wichtig.@charlenemasters to make the second approach work the order of declaring variable and accessing it is very important.
- 0
- 2013-03-07
- Vinod Dalvi
-
Der zweite Ansatz solltemit "Echo" sein,um zu arbeitenthe second approach should be with `echo` in order to work
- 2
- 2016-10-21
- Claudiu Creanga
-
@ClaudiuCreanga Danke,sollteecho sein: `var stylesheet_directory_uri=" Phpechoget_stylesheet_directory_uri ();?> ";`@ClaudiuCreanga Thanks, should be echo: `var stylesheet_directory_uri = "";`
- 0
- 2018-06-12
- ycc_swe
-
- 2013-03-07
Sie können Ihre Javascript-Dateien lokalisieren,wodurch Sie die Möglichkeiterhalten,ein Javascript-Array zugenerieren,dasmit PHP-definierten Werten (z. B. Lokalisierung oder Verzeichnisse)gefülltist.
Wenn Sie Ihre Javascript-Datei über
wp_enqueue_script
oderwp_register_script
laden,können Sie diese wiefolgteinrichten: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() );
Undin Ihren Javascript-Dateien können Sie diese Variablen wiefolgt aufrufen:
my_unique_name.stylesheet_directory
You can localize your javascript files, wich gives you the opportunity to generate a javascript array filled with PHP defined values (such as localisation or directories).
If you load your javascript file trough
wp_enqueue_script
orwp_register_script
its easy to set up like follows: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() );
And in your javascript files, you can call these variables by:
my_unique_name.stylesheet_directory
-
- 2016-08-12
Ich habemit dieserpraktischen kleinen Methodebegonnen,das WordPress-Designverzeichnis abzurufen und alsglobale JavaScript-Variable zu speichern (alles auseiner Javascript-Datei heraus):
function getThemeDir() { var scripts = document.getElementsByTagName('script'), index = scripts.length - 1, myScript = scripts[index]; return myScript.src.replace(/themes\/(.*?)\/(.*)/g, 'themes/$1'); } themeDir = getThemeDir();
Diesfunktioniertnur,wenn diefolgenden Bedingungen erfüllt sind:
1. Dieses Snippet wird übereine externe JavaScript-Datei ausgeführt - wiefolgt:
<script src="/wp-content/themes/themename/assets/app.js"></script>
2. Diejs-Dateibefindet sichim Themenverzeichnis (oder Unterverzeichnis) Ihrer Site.
I started using this convenient little method to get the WordPress theme directory and store it as a global JavaScript variable (all from within a javascript file):
function getThemeDir() { var scripts = document.getElementsByTagName('script'), index = scripts.length - 1, myScript = scripts[index]; return myScript.src.replace(/themes\/(.*?)\/(.*)/g, 'themes/$1'); } themeDir = getThemeDir();
This will only work if the following conditions are met:
1. This snippet is executed via an external JavaScript file - like this:
<script src="/wp-content/themes/themename/assets/app.js"></script>
2. The js file resides within your site's theme directory (or subdirectory).
-
- 2017-01-01
So habeichesgemacht.
Platzieren Sie die Javascript-Datei und die Bilderim Themenordner/Assets
Undbearbeiten Sie diefolgenden Dateien.
Infunctions.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() ));
In Ihrer Javascript-Datei
var url = myScript.theme_directory + '-child/assets/';
This is how I did it.
Place the javascript file and images in theme-folder/assets
And edit the following files.
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() ));
In your javascript file
var url = myScript.theme_directory + '-child/assets/';
-
- 2016-06-14
Wenn die Javascript-Datei aus dem Admin-Dashboardgeladen wird,können Siemit dieser Javascript-Funktion das Stammverzeichnis Ihrer WordPress-Installation abrufen.
function getHomeUrl() { var href = window.location.href; var index = href.indexOf('/wp-admin'); var homeUrl = href.substring(0, index); return homeUrl; }
Dann kontaktieren Sieeinfach den Pfad zu Ihrem Thema wie unten.
var myThemePath = getHomeUrl() + '/wp-content/themes/myTheme';
If the javascript file is loaded from the admin dashboard, you can use this javascript function get the root of your WordPress installation.
function getHomeUrl() { var href = window.location.href; var index = href.indexOf('/wp-admin'); var homeUrl = href.substring(0, index); return homeUrl; }
Then just contact the path to your theme like below.
var myThemePath = getHomeUrl() + '/wp-content/themes/myTheme';
Ichmuss den Pfad zumeiner Themendateiin eine Javascript-Datei aufnehmen.Wie würdeich dasmachen?Ich habebereits versucht:
Diesgibt mirnicht den Pfad,sondernfügtnur
<?php get_stylesheet_directory_uri(); ?>
anstelle destatsächlichen Pfads.Irgendwelche Ideen?Vielen Dankim Voraus!