Opendir and Wordpress Path

时间:2012-09-17 作者:Allen

我在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 个回复
SO网友:Adam

下面是一个示例。。。

 //..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);
它起作用了。。。

SO网友:Joseph Leedy

我最近使用了以下代码来批处理一些图像,但您可以修改它以满足您的需要:

<?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
}
注意:我的回答的目的是展示一种替代方法。可以找到此代码的使用示例here 在线253。

结束

相关推荐

从非核心php文件访问BloInfo、Get_Option和plugins_url

我正在创建一个插件,插件目录中有一个php文件,可以通过自定义重写url直接访问该文件。我需要这个文件能够使用标题中提到的三个功能。目前,我正在包括wp负载。php文件,它使我能够访问所有这些函数。然而,我一直在读到不应该包括wp负载,因为它可能不总是在同一个位置,而且它包括可能不需要的wordpress文件。这就是我如何包含wp负载:$wp_base = explode($_SERVER[\'PHP_SELF\'], $_SERVER[\'SCRIPT_FILENAME\']); require