我正在尝试使用if (file_exists()
检索WP帖子的图像,这些图片保存在wp-uploads目录中,但它无法识别文件路径。
每篇文章最多可提供8张图片。每个图像在文件名末尾都有字母a-g(或者没有),并且str_replace用于替换文件名中的某些字符。
我需要显示每个图像是否存在,如果不存在,则不显示任何内容。因此,如果帖子与最后的b,d和f的图像相关联,则只显示这三个。
我已经在没有(file_exists())
的情况下进行了测试,并且能够为每个图像添加一个简单的回声 - 但似乎$img
路径无法被识别。
我有点像一个PHP菜鸟所以任何帮助将不胜感激...
$uid = get_post_meta (get_the_ID(), 'Unique number', true);
$root ="/wp-content/uploads/2016/Collection/";
$path = str_replace(" ","_",$uid);
$path = str_replace(".","_",$path);
$path = str_replace(":","",$path);
$img = $root.$path.".jpg";
$imga = $root.$path."a.jpg";
$imgb = $root.$path."b.jpg";
$imgc = $root.$path."c.jpg";
$imgd = $root.$path."d.jpg";
$imge = $root.$path."e.jpg";
$imgf = $root.$path."f.jpg";
$imgg = $root.$path."g.jpg";
if (file_exists($img)) { echo "<img src='".$root.$path.".jpg' />"; } else { echo ""; }
if (file_exists($imga)) { echo "<img src='".$root.$path.".jpg' />"; } else { echo ""; }
if (file_exists($imgb)) { echo "<img src='".$root.$path."b.jpg' />"; } else { echo ""; }
if (file_exists($imgc)) { echo "<img src='".$root.$path."c.jpg' />"; } else { echo ""; }
if (file_exists($imgd)) { echo "<img src='".$root.$path."d.jpg' />"; } else { echo ""; }
if (file_exists($imge)) { echo "<img src='".$root.$path."e.jpg' />"; } else { echo ""; }
if (file_exists($imgf)) { echo "<img src='".$root.$path."f.jpg' />"; } else { echo ""; }
if (file_exists($imgg)) { echo "<img src='".$root.$path."g.jpg' />"; } else { echo ""; }`
答案 0 :(得分:1)
您使用$root
启动/
,因此它从服务器的根目录开始。删除第一个/
并重试。
答案 1 :(得分:1)
您需要重新排列告诉PHP查找地址的方式,
select
可能不是你的绝对文件路径根(可能意味着绝对)所以请使用特殊的超级变量,$_SERVER['DOCUMENT_ROOT']
这是网络的根源可访问的文件路径,因此您有:
$root
这是检查文件是否存在的文件结构,不要在$img = $_SERVER['DOCUMENT_ROOT'].$root.path.".jpg"
//while retaining your current / at the start of $root
标记中引用的文件结构,这似乎是正确的你上面的例子。
因此,您的整体修正应如下所示:
<img>
另外需要注意的是,此函数的结果是缓存的,因此您应该在此文件的开头调用clearstatcache()
,以便它可以对图像是否存在进行新的检查。目前没有这个,即使图像确实存在,PHP将使用缓存 - 过去 - 结果可能不是最新的。
答案 2 :(得分:0)
cars = $scope.cars; //this should return [1, 2]
获取基本目录。
$uid = get_post_meta (get_the_ID(), 'Unique number', true);
$path = str_replace(" ","_",$uid);
$path = str_replace(".","_",$path);
$path = str_replace(":","",$path);
$uploads = wp_upload_dir();