J'ai écrit une fonction simple pour obtenir le contenu d'un dossier (appelé modèles) dans mon plugin wordpress, mais je ne parviens pas à obtenir le chemin d'accès au travail (la fonction meurt toujours). Ma question est la suivante: existe-t-il une fonction wordpress ou quelque chose qui me donnera le chemin d'accès à mon plugin comme requis pour que la fonction opendir fonctionne?
function get_templates(){
$path = '[path to my plugin]/templates';
$dir_handle = @opendir($path) or die("Cannot open the damn file $path");
while ($file = readdir($dir_handle)) {
if(substr($file,-3) == "php" )
continue;
$TheLinkedFile = $path."/".$file;
if(file_exists($TheLinkedFile)) {
echo $TheLinkedFile.'<br>';
} else {
echo "nothing";
}
}
closedir($dir_handle);
}
Voici un exemple...
//..path/to/wp-content/plugins/your-plugin-basedir/
$path = plugin_dir_path( __FILE__);
//..directory within your plugin
$path .= 'templates';
//..continue with your script...
$dir_handle = @opendir($path) or die("Cannot open the damn file $path");
En passant, j'ai testé le reste de votre script pour voir s'il lisait effectivement le répertoire et répertoriait les fichiers avec l'extension * .php et que cela ne fonctionnerait pas.
Au lieu de cela après l'avoir modifié à;
$dir_handle = @opendir($path) or die("Cannot open the damn file $path");
while ($file = readdir($dir_handle)) {
//get length of filename inc. extension
$length_of_filename = strlen($file);
//strip all but last three characters from file name to get extension
$ext = substr($file, -3, $length_of_filename);
if($ext == "php" ) {
$TheLinkedFile = $path."/".$file;
if(file_exists($TheLinkedFile)) {
echo $TheLinkedFile.'<br>';
} else {
echo "nothing";
}
}
}
closedir($dir_handle);
Ça marche...
J'ai récemment utilisé le code suivant pour le traitement par lots de certaines images, mais vous pouvez le modifier pour répondre à vos besoins:
<?php
$dir = plugin_dir_path( __FILE__ ) . 'path/to/files/';
foreach ( glob( $dir . '*.php' ) as $file ) {
$file_name = basename( $file );
// do what you want with $file - no need to check for existence
}
Remarque: le but de ma réponse est de montrer une autre façon de procéder. Un exemple d'utilisation de ce code peut être trouvé ici à la ligne 253.