L'url du chemin WordPress dans le fichier de script js

j'ai ajouté custom script:

wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false);

cela fonctionne bien, sauf dans le functions.js j'ai:

Reset.style.background = "url('../images/searchfield_clear.png') no-repeat top left";

cela fonctionnait avant, jusqu'à ce que je change en plutôt permalien et .htaccess

la hiérarchie des dossiers est comme:

themename/js themename/images (le dossier images et js est dans le dossier nom)

j'ai essayé ../image. - /image - / images

normalement, il devrait retourner au niveau 1 où le fichier js est hébergé....

Je ne veux pas utiliser le chemin complet.

Existe-t-il une autre façon que WordPress peut reconnaître dans le fichier javascript pour avoir le chemin correct?

actuellement je suis juste confus ce que je fais mal.

40
demandé sur Jazzepi 2011-03-07 18:40:30

5 réponses

vous pouvez éviter le codage dur du chemin complet en mettant une variable JS dans l'en-tête de votre modèle, avant wp_head() est appelé, contenant L'URL du modèle. Comme:

<script type="text/javascript">
var templateUrl = '<?= get_bloginfo("template_url"); ?>';
</script>

Et utiliser cette variable pour définir l'arrière-plan (je me rends compte que vous savez comment faire, je n'inclure ces détails, au cas où ils aide les autres):

Reset.style.background = " url('"+templateUrl+"/images/searchfield_clear.png') ";
58
répondu AJJ 2011-03-07 16:07:57

selon la documentation Wordpress, vous devez utiliser wp_localize_script() dans vos fonctions.fichier php. Cela créera un objet Javascript dans l'en-tête, qui sera disponible pour vos scripts à l'exécution.

Voir Codex

Exemple:

<?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' => get_option('siteurl') )); ?>

pour accéder à cette variable dans Javascript, il vous suffit de faire:

<script type="text/javascript">
    var url = WPURLS.siteurl;
</script>
89
répondu Chris 2015-01-13 18:28:34
    wp_register_script('custom-js',WP_PLUGIN_URL.'/PLUGIN_NAME/js/custom.js',array(),NULL,true);
    wp_enqueue_script('custom-js');

    $wnm_custom = array( 'template_url' => get_bloginfo('template_url') );
    wp_localize_script( 'custom-js', 'wnm_custom', $wnm_custom );

et dans la coutume.js

alert(wnm_custom.template_url);
23
répondu keithics 2012-11-12 17:32:18

si le fichier javascript est chargé à partir du tableau de bord admin, cette fonction javascript vous donnera la racine de votre installation WordPress. Je l'utilise beaucoup quand je construis des plugins qui ont besoin de faire des requêtes ajax à partir du tableau de bord administrateur.

function getHomeUrl() {
  var href = window.location.href;
  var index = href.indexOf('/wp-admin');
  var homeUrl = href.substring(0, index);
  return homeUrl;
}
2
répondu Jam Risser 2016-06-14 06:03:29

pour les utilisateurs travaillant avec le cadre Genesis.

ajouter ce qui suit au thème de votre enfant functions.php

add_action( 'genesis_before', 'script_urls' );

function script_urls() {
?>
    <script type="text/javascript">
     var stylesheetDir = '<?= get_bloginfo("stylesheet_directory"); ?>';
    </script>
<?php
}

et utilisez cette variable pour définir l'url relative dans votre script. Par exemple:

Reset.style.background = " url('"+stylesheetDir+"/images/searchfield_clear.png') ";
0
répondu Toine Pel 2018-05-09 12:49:07