2016-12-21 1 views
0

Je veux appeler un fichier js avec wp_enqueue_script.comportement étrange de wp_enqueue_script sur une installation xampp locale

J'utilise get_template_directory(), comme ceci:

$myfile = wp_normalize_path(get_template_directory().'/js/script.js'); 
$myversion = filemtime($myfile); 
wp_enqueue_script('myscript', $myfile , array('jquery'), $myversion, true); 

cela fonctionne sur le serveur: Si je fais l'écho $myfile, il retourne un vrai chemin, comme /home/public_html/folder/wp-content/themes/mytwentysixteen/js/script.js, alors que sur la page web, il retourne le chemin absolu du fichier correctement.

(Notez que ce qui précède -. Au moins filemtime partiel échouerait si je get_template_directory_uri)

Sur mon xampp installation locale (machine Windows), cela ne fonctionne pas.

Si je echo $myfile, il renvoie le chemin d'accès local correct:

D:/path/to/folder/wp-content/themes/mytwentysixteen/js/script.js 

Cependant, après wp_enqueue_script, sur la page web, il retourne quelque chose comme ceci:

http://localhost/folderD:pathtofolder/wp-content/themes/mytwentysixteen/js/script.js 

et la page ne récupérez le script. Cela semble un mariage étrange entre l'URL de la maison sur localhost et le chemin des fenêtres locales.

wp_normalize_path ne semble pas aider.

Répondre

1

Apparemment, la solution est que get_template_directory() ne devrait pas être utilisé pour mettre en file d'attente des scripts, mais il devrait être utilisé pour les fonctions PHP comme filemtime.

Par conséquent, la solution est de séparer les deux, comme ceci:

$myfile = get_template_directory_uri().'/js/script.js'; 
$myversion = filemtime(get_template_directory().'/js/script.js'); 
wp_enqueue_script('myscript', $myfile , array('jquery'), $myversion, true); 

J'utilise ici get_template_directory_uri() pour récupérer le script, et get_template_directory() pour obtenir l'horodatage du fichier et travaillent tous les deux sur xampp sans problème .