php - 需要帮助从 wordpress 中的子文件夹递归渲染图像
问题描述
我们有一个 Wordpress 网站,显示来自 6 个网络摄像头的图像。它旨在显示第二个最近的图像。图像按相机、天、小时、分钟以文件夹的形式上传到 WordPress 网站,
该网站保留最后几个小时的图像。我想生成一个 wordpress 页面,例如显示我们拥有的 camera6 文件夹中的每个图像。
这是上传 wp-content/uploads/cameras/Camera4/2020-05-02/001/jpg/13/12/00[R][0@0][0].jpg id 的文件夹结构能够解析 wp-content/uploads/cameras/Camera4 下的文件夹并在单个页面上显示所有图像。每分钟大约有 3 张图像。一个 cron 在每小时 10 点清理文件夹。
如果它在这里有帮助,那就是显示 6 个最新图像的代码
$upload_dir = wp_upload_dir();
$camera_dir_1 = ( $upload_dir['basedir'] . "/cameras/Camera1/$today/001/jpg/$hourMin/$minute");
$camera_dir_2 = ( $upload_dir['basedir'] . "/cameras/Camera2/$today/001/jpg/$hourMin/$minute");
$camera_dir_3 = ( $upload_dir['basedir'] . "/cameras/Camera3/$today/001/jpg/$hourMin/$minute");
$camera_dir_4 = ( $upload_dir['basedir'] . "/cameras/Camera4/$today/001/jpg/$hourMin/$minute");
$camera_dir_5 = ( $upload_dir['basedir'] . "/cameras/Camera5/$today/001/jpg/$hourMin/$minute");
$camera_dir_6 = ( $upload_dir['basedir'] . "/cameras/Camera6/$today/001/jpg/$hourMin/$minute");
$files_array_1 = scandir($camera_dir_1);
$files_array_2 = scandir($camera_dir_2);
$files_array_3 = scandir($camera_dir_3);
$files_array_4 = scandir($camera_dir_4);
$files_array_5 = scandir($camera_dir_5);
$files_array_6 = scandir($camera_dir_6);
$second_most_image_camera_1=get_site_url().'/wp-content/uploads/cameras/Camera1/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_1["2"];
$second_most_image_camera_2=get_site_url().'/wp-content/uploads/cameras/Camera2/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_2["2"];
$second_most_image_camera_3=get_site_url().'/wp-content/uploads/cameras/Camera3/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_3["2"];
$second_most_image_camera_4=get_site_url().'/wp-content/uploads/cameras/Camera4/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_4["2"];
$second_most_image_camera_5=get_site_url().'/wp-content/uploads/cameras/Camera5/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_5["2"];
$second_most_image_camera_6=get_site_url().'/wp-content/uploads/cameras/Camera6/'.$today.'/001/jpg/'.$hourMin.'/'.$minute.'/'.$files_array_6["2"];
?>
<ul class="home_camera_sum">
<div style="text-align:center;">
<br><br>
<li><img src="<?php echo $files_array_1; ?>" target="new" class="image"
alt="camera images"></li>
<li><img src="<?php echo $second_most_image_camera_4; ?>" target="new" class="image" alt="camera image"></li> <li><img src="<?php echo $second_most_image_camera_3; ?>" target="new" class="image" alt="camera image"></li> <P>
<li><img src="<?php echo $second_most_image_camera_2; ?>" target="new" class="image" alt="camera image"></li> <li><img src="<?php echo $second_most_image_camera_1; ?>" target="new" class="image" alt="camera image"></li> <P>
<li><img src="<?php echo $second_most_image_camera_5; ?>" target="new" class="image" alt="camera image"></li> <li><img src="<?php echo $second_most_image_camera_6; ?>" target="new" class="image" alt="camera image"></li>
</ul>
<div style="text-align:center;">
<?php`
解决方案
我会使用glob
(https://www.php.net/manual/en/function.glob.php)。
它接受一个模式,并返回与该模式匹配的所有文件,例如:
for ($i=1; $i<=6; $i++) {
$image_files = glob($upload_dir['basedir'] . '/cameras/Camera' . $i . '/**/*.jpg');
// print all images in folder CameraX
foreach ($image_files as $filename) {
echo '<BR>' . $filename;
}
}
这应该有效——或者至少为你指明正确的方向。
推荐阅读
- tensorflow - TFS MultiInference rpc 方法中的错误(未定义的行为)
- excel - 比较两个工作表时 Excel 停止响应
- java - 如何在积极的前瞻中使用lineend?
- postgresql - 如何知道 PostgreSQL COPY 是否存在
- google-app-maker - 是否可以在 Google Appmakers 中以编程方式向表格小部件添加值
- python - 如何将 groupby 分组表从 dataFrame 写入 word 文档?
- php - 如何在一个事件中广播多个频道?
- npgsql - 多插入更新解决方案的最佳解决方案
- c# - 使用 DateTime 的 Dapper 查询
- java - Vavr - 将列表列表转换为单个列表