web-dev-qa-db-fra.com

Opendir et Wordpress Path

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);

  }
2
Allen

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");

METTRE À JOUR

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...

1
userabuser

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.

0
Joseph Leedy