Wordpress>无论父路径如何,都可以获得我的主题图像目录的完整路径

时间:2009-12-23 19:08:11

标签: php

我有一个函数,其目的是列出wordpress主题的images目录中的文件夹。当用户在站点的根目录中安装了wordpress时,它非常有用。但是,如果用户在根目录下的文件夹中安装了wordpress,则会失败...

$ mydir = get_dirs($ _ SERVER ['DOCUMENT_ROOT']。'/ wp-content / themes / mytheme / images');

只要将wordpress直接安装到网站的根目录中,此功能就可以正常工作,例如site.com/index.php

但是,如果用户已将其博客安装在虚拟目录中,则此路径方法将失败。示例:site.com/somedirectory/index.php

有人可以通过更好的方法来确定$ mydir的路径吗?

如果我可以使用http地址提供我的函数,那将非常简单,但我的函数需要将images目录的路径作为服务器目录。有人知道使用http方法在给定目录下查找文件夹的方法吗?例如,我可以使用...

获取对主题图像目录的引用

$ mydir = get_bloginfo('url')。'/ wp-content / themes / mytheme / images';

但是,下面的函数不会占用URL,它必须是我要解析的所选目录的物理文件路径。所以我需要用一个带URL的函数替换它,或者我需要找到一些方法将$ mydir函数转换为物理路径,或者其他一些方法。

这是我用来解析目录并将每个文件夹分配给数组的函数。

function get_dirs($path = '.') 
{
$dirs = array();
try
{
    foreach (new DirectoryIterator($path) as $file) 
    {
        if ($file->isDir() && !$file->isDot()) 
        {
        $dirs[] = $file->getFilename();
        }
    }
} 
catch(Exception $e) 
{
    //log exception or process silently
    //just for test
    echo "There is a problem inside the get_dirs function";
}
return $dirs;
}

5 个答案:

答案 0 :(得分:12)

根据编码,使用的正确函数是:

get_template_directory() 

或者如果你想要uri:

get_template_directory_uri()

答案 1 :(得分:7)

我更喜欢在可用时使用Wordpress功能。在这种情况下,将是:

get_stylesheet_directory(). '/images';

这将返回当前所选主题中的images目录路径,即使它是子主题。

Function Reference/get stylesheet directory

答案 2 :(得分:3)

我这里没有安装Wordpress,但是如果你把它放在主题文件夹中的functions.php中怎么办?

function get_dir_path(){
    return dirname(__FILE__).'/images';
}

然后,而不是

$mydir = get_bloginfo('url').'/wp-content/themes/mytheme/images';

你刚刚做了

$mydir = get_dir_path();

文件是一个有用的"magical" constant

答案 3 :(得分:0)

答案 4 :(得分:0)

您可以使用home_url代替$_SERVER['DOCUMENT_ROOT']。 例如,home_url( '/' ) . 'wp-content/themes/mytheme/images'会生成一个链接http://localhost/,后跟网址的其余部分。