我一直没有在这里发帖,因为我觉得这是一个简单的问题,已经反复多次回答。我知道这一点是因为我读过人们提出同样问题的无数帖子,但由于某种原因,我无法得到相同的结果。
我需要的是相当简单的。我需要在WordPress页面的模板文件中显示与当前页面和父页面相关的目录中的所有图像。
首先,请允许我指出,我能够在WordPress之外使用此代码,因此我始终相信内容在模板文件中的传送方式存在问题。
这是我的代码:
<?php
$page_parent = get_the_title($post->post_parent);
$current_page = get_the_title($post);
$upload_dir = wp_upload_dir();
$dir = $upload_dir['baseurl'].'/assets/'.$page_parent.'/'.$current_page.'/';
$files = glob($dir.'{*.jpg,*.png}', GLOB_BRACE);
foreach ($files as $image){
echo '<img src="'.$dir.$image.'" alt="'.$image.'" />';
};
var_dump($files); // This displays array(0) { }
var_dump($image); // This display NULL
echo $dir; // This works to display the correct URL.
?>
上面的代码没有显示任何图片,即使我删除了<img>
代码并尝试了一个简单的echo $image;
,它仍然不会显示文件名。但是,echo $dir;
可以正常工作并显示正确的网址,该网址是http://localhost:8888/wordpress/wp-content/uploads/assets/Photography/Holga/
当我var_dump($files)
时,我得到的是array(0) { }
,当我var_dump($image)
时,我得到的只是NULL
,但在WordPress之外它会显示数据。
我知道页面名称可能有大写的标题,所以我保持文件夹结构一致,但正如我所提到的,我能够在WordPress之外完成这项工作,这让我感到害怕!
有没有人有任何建议或理由说明为何这可能无法在WordPress页面模板中发挥作用?
提前致谢!
答案 0 :(得分:1)
在wp_upload_dir()
返回的数组中,您希望使用$upload_dir['basedir']
而不是$upload_dir['baseurl']
。这将返回uploads文件夹的路径,而不是它的URL。
您没有收到任何结果,因为您没有将有效路径传递给glob()
。
来自文档中的注释:
注意:此功能不适用于远程文件,因为必须可以通过服务器的文件系统访问要检查的文件。