2016-12-21 5 views
0

Dans un environnement WordPress.Tentative d'ajout de version à l'aide de filemtime mais échoue

J'essaie d'ajouter automatiquement versioning à mes scripts en utilisant filemtime, mais le message d'erreur suivant:

Warning: filemtime() [function.filemtime]: stat failed for (file name) 

le code est simple

$myfile = get_template_directory_uri() . '/js/script.js'; 
wp_enqueue_script('mywebsite-script',$myfile , array('jquery'), filemtime($myfile), true); 

le chemin du fichier est correct , mais comme je l'ai dit, je reçois le message stat failed. Si j'ajoute le contrôle if (file_exists($myfile)), toute l'opération est ignorée. Pourtant, si je renvoie le chemin à $myfile, cela est correctement imprimé et peut être ouvert dans le navigateur!

Le chemin ne contient pas de caractères fantaisie. Le serveur n'est pas sur Windows, j'ai lu l'encodage pourrait être une raison pour cela mais je ne sais pas ce que la solution de contournement devrait être, si c'est le cas.

Où est-ce que le problème pourrait être?

+0

permissions de fichiers ... c'est ma pensée, est-php a la permission au fichier. – ArtisticPhoenix

+0

@ArtisticPhoenix: encore php peut lire le fichier, mettre en file d'attente le script via Wordpress ... ne devrait-il pas être capable de lire l'heure du fichier tout aussi bien? Savez-vous s'il existe un moyen de vérifier s'il s'agit d'un problème d'autorisation via php? – nico

Répondre

0

Vous devez utiliser le chemin réel à la place:

$myfile = get_template_directory_uri() . '/js/script.js'; 
$realpath = get_template_directory().'/js/script.js'; 
wp_enqueue_script('mywebsite-script',$myfile , array('jquery'), filemtime($realpath), true); 
+0

Je pensais que cela avait échoué aussi, mais j'avais tort, j'avais foiré tout en commentant des parties. Cela a fonctionné. Merci! C'est drôle comment j'ai trouvé des exemples là-bas en utilisant le thingy '_uri' Wordpress. – nico

+0

Je viens de découvrir que cela casse localement sur mon xampp. Le "vrai chemin" du script ressemble maintenant à ceci: 'http: // localhost/folderD: foldersonhardiskwithnospaces/wp-content/themes/thème/js/script.js' ... – nico

+0

get_template_directory() retournera un vrai chemin comme: /var/www/wordpress/wp.local/wp-content/themes/twentyseventeen (linux) Je vois que vous fournissez est un 'uri' pas 'chemin du répertoire'. ai-je tort ? –