首页 > 解决方案 > 需要帮助从 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`

标签: phphtmlwordpress

解决方案


我会使用globhttps://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;
    }
}

这应该有效——或者至少为你指明正确的方向。


推荐阅读