我有一个函数,其目的是列出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;
}
答案 0 :(得分:12)
根据编码,使用的正确函数是:
get_template_directory()
或者如果你想要uri:
get_template_directory_uri()
答案 1 :(得分:7)
我更喜欢在可用时使用Wordpress功能。在这种情况下,将是:
get_stylesheet_directory(). '/images';
这将返回当前所选主题中的images目录路径,即使它是子主题。
答案 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/
,后跟网址的其余部分。