J'ai tout un dossier js
de scripts et il serait fastidieux de les charger tous avec wp_enqueue_script()
un par un.
Est-il possible de simplement insérer le répertoire dans lequel ils se trouvent et de le faire pour moi?
Il n'y a rien de mal à mettre en file d'attente de nombreux fichiers à l'aide de wp_enqueue_script
. Si vous parlez de frustrant, il existe alors une solution simple.
PHP propose une fonction permettant de lister les fichiers et les répertoires. En utilisant glob
, vous pouvez répertorier tous les fichiers .js
de votre répertoire, puis les mettre en file d'attente par une boucle.
function enqueue_my_scripts(){
foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
// $file contains the name and extension of the file
wp_enqueue_script( $file, get_template_directory_uri().'/path/'.$file);
}
}
add_action('wp_enqueue_scripts', 'enqueue_my_scripts');
Un côté n'est pas que glob
utilise un chemin relatif, mais wp_enqueue_script
utilise des URL. C'est pourquoi j'ai utilisé différentes fonctions pour obtenir le chemin d'accès et l'URI du dossier.
Sur WordPress 4.9, le chemin relatif (get_template_directory) renvoyait $ file comme chemin complet, ce qui est inutilisable sur un serveur partagé. J'ai découvert que je devais utiliser la fonction substr pour renvoyer uniquement le nom du fichier, puis créer l'URI à partir de celui-ci.
foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
$filename = substr($file, strrpos($file, '/') + 1);
wp_enqueue_script( $filename, get_template_directory_uri().'/path/'.$filename);
}