web-dev-qa-db-ja.com

OpendirとWordpressのパス

私は私のwordpressのプラグインのフォルダ(テンプレートと呼ばれる)の内容を取得するための簡単な関数を書きましたが、うまくいくパスを取得するのに問題があります(したがって関数は常に死にます)。私の質問は、次のとおりです。ワードプレス機能、またはopendir機能を機能させるのに必要なプラグインへのパスを提供するものはありますか。

 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

これは一例です...

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

更新

私はあなたのスクリプトの残りの部分をテストして、それが実際にディレクトリを読み、*。php拡張子のファイルをリストアップしたかどうかを確かめ、そしてそれがうまくいかないかどうかを確かめた。

代わりにそれを変更した後。

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

できます...

1
userabuser

私は最近いくつかの画像をバッチ処理するために次のコードを使用しました、しかしあなたはあなたの必要性に合うようにそれを修正することができます:

<?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
}

注:私の答えの目的は、これを実行するための代替方法を示すことです。このコードの使用例は、253行目の にあります

0
Joseph Leedy