chemin du thème dans le fichier javascript
6 réponses
- votes
-
- 2013-03-07
Ce que vous recherchez,c'est la fonction wp_localize_script .
Vous l'utilisez comme ceci lors de la saisie du 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 );
Dans votre style.js,il y aura:
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; ...
-
impressionnant.afonctionné comme un charme!awesome. worked like a charm!
- 0
- 2016-11-28
- James Hall
-
- 2013-03-07
Voici les deuxméthodes suivantespour ajouter le chemin duthème dans unfichierjavascript.
1) Vouspouvez utiliser wp_localize_script () suggérépar wordpress dans votrefichierfunctions.php. Cela créera un objet Javascript dans l'en-tête,qui sera disponiblepour vos scripts lors de l'exécution.
Exemple:
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 );
et peut utiliser dans votrefichierjs comme suit:
alert(directory_uri.stylesheet_directory_uri);
2) Vouspouvez créer unextrait de code Javascript quienregistre l'URI du répertoire demodèles dans une variableet l'utiliser ultérieurement comme suit: Ajoutez ce code dans lefichier header.php avant lefichierjs dans lequel vous souhaitez utiliser ce chemin. Exemple:
<script type="text/javascript"> var stylesheet_directory_uri = "<?php echo get_stylesheet_directory_uri(); ?>"; </script>
et peut utiliser dans votrefichierjs comme suit:
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_localizefonctionne!J'ai aussiessayé la 2ème approche,maisje n'aipas réussi à lafairefonctionner.wp_localizefonctionneestprobablement unemeilleurepratique,non?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
-
@charlenemasterspour que la seconde approchefonctionne dans l'ordre de déclaration de la variableet d'y accéderesttrèsimportant.@charlenemasters to make the second approach work the order of declaring variable and accessing it is very important.
- 0
- 2013-03-07
- Vinod Dalvi
-
la deuxième approche devrait être avec «echo»pourfonctionnerthe second approach should be with `echo` in order to work
- 2
- 2016-10-21
- Claudiu Creanga
-
@ClaudiuCreanga Merci,devrait êtreecho: `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
Vouspouvez localiser vosfichiersjavascript,ce qui vous donne lapossibilité degénérer untableaujavascript rempli de valeurs définiespar PHP (comme la localisation ou les répertoires).
Si vous chargez votrefichierjavascript via
wp_enqueue_script
ouwp_register_script
,ilestfacile à configurer comme suit: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() );
Et dans vosfichiersjavascript,vouspouvez appeler ces variablespar:
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
J'ai commencé à utiliser cettepetite méthodepratiquepour obtenir le répertoire duthème WordPresset le stockeren tant que variable JavaScriptglobale (letout àpartir d'unfichierjavascript):
function getThemeDir() { var scripts = document.getElementsByTagName('script'), index = scripts.length - 1, myScript = scripts[index]; return myScript.src.replace(/themes\/(.*?)\/(.*)/g, 'themes/$1'); } themeDir = getThemeDir();
Celane fonctionnera que si les conditions suivantes sont remplies:
1. Cetextraitestexécuté via unfichier JavaScriptexterne - comme ceci:
<script src="/wp-content/themes/themename/assets/app.js"></script>
2. Lefichierjs setrouve dans le répertoire dethème (ou sous-répertoire) de votre 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
Voici commentje l'aifait.
Placez lefichierjavascriptet lesimages dans le dossier-thème/les ressources
Etmodifiez lesfichiers suivants.
Dansfunctions.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() ));
Dans votrefichierjavascript
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
Si lefichierjavascriptest chargé depuis letableau debord d'administration,vouspouvez utiliser cettefonctionjavascriptpour obtenir la racine de votreinstallation WordPress.
function getHomeUrl() { var href = window.location.href; var index = href.indexOf('/wp-admin'); var homeUrl = href.substring(0, index); return homeUrl; }
Ensuite,contactez simplement le chemin d'accès à votrethème comme ci-dessous.
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';
J'aibesoin d'inclure le chemin demonfichier dethème dans unfichierjavascript.Commentpourrais-jeprocéder?J'ai déjàessayé:
Celane me donnepas le chemin,maisinsère simplement
<?php get_stylesheet_directory_uri(); ?>
au lieu du chemin réel.Desidées?Merci d'avance!