如何在我的插件文件夹中使用相对路径?

时间:2013-10-30 作者:sun

嗨,我试着挑选一个文件夹中的所有图像,以便用户在我的插件中的指定文件夹中放置的任何图像都可以在插件中使用。

我尝试了以下php函数来选择文件夹中的图像或文件

glob

scandir
当我在wordpress框架中尝试上述操作时,出现了错误The system cannot find the file specified.当我在wordpress区域以外的本地服务器中尝试时,它正在指定文件夹中拾取文件。

<?php
foreach(glob(\'../images/*.png\') as $filename){
     echo $filename;
 }?>
扫描方法

<?php
 foreach(scandir(\'../images/\') as $filename){
     echo $filename;
 }?>
以上在WordPress框架之外工作正常

我在WordPress中为插件文件夹中的插件做了同样的尝试,但我无法完成任务。这不起作用。

Attempt 1

<?php
foreach(glob(\'../images/*.png\') as $filename){
     echo $filename;
 }?>
我什么都没有,没有错误,没有警告,也没有输出。

Attempt 2

<?php
     foreach(scandir(\'../images/\') as $filename){
         echo $filename;
     }?>
我收到了警告Warning: scandir(../images/,../images/): The system cannot find the file specified. (code: 2)

 Warning: scandir(../images/): failed to open dir: No such file or directory
正在尝试此操作的文件位于不同的文件夹中,但目录相同。

例如

包含此代码的Php文件位于inc 文件夹inc/settings.php

我正在查看的图像images 文件夹

这两个文件夹都在我的插件文件夹中

 - myplugin
           myplugin.php
           /images
           /inc
           /documentaion

Now how to get all images names in my images folder?

注意:我通常在主文件中包含其他php文件,如include(\'inc/settings.php\');

这些东西工作得很好,所以很可能在路径指定方面没有问题,可能是在使用scandirglob 作用我猜不出。有人能帮我吗?

当我简单地使用下面的

foreach(glob(\'images/*.png\') as $filename){
         echo $filename;
     }
     ?>

Am getting images from wp-admin/images folder any idea?

2 个回复
最合适的回答,由SO网友:sun 整理而成

scandirglob 与目录相关,因此WP_PLUGIN_DIR 而不是plugins_url() 返回url,但不返回目录。

下面两个函数都很有用

WP_PLUGIN_DIR

plugin_dir_path( __FILE__ )
我尝试了上述功能,它对我很有效。

记住如果你只是使用

<?php
    foreach (glob(\'images/*.png\') as $filename) {
        echo $filename;
    }
?>
它将从wp-admin/images 可能是根目录。我不确定。

如果您认为此处有问题,请发表评论:)

SO网友:brasofilo

这个答案与first version 关于这个问题,我不知道如何更新它,我将把它留在这里作为一般参考

不要为此使用插件文件夹(或主题)。也许你的插件没有升级功能,什么都不会被覆盖。但最佳做法是在中使用文件夹/wp-content 根部或内部/wp-content/uploads.

在里面/wp-content/my-images:

$test = glob( WP_CONTENT_DIR . \'/my-images/*.png\');
在中/wp-content/uploads/my-images:

$up_dir = wp_upload_dir();
$test = glob( $up_dir[\'basedir\'] . \'/images/*.png\');

结束