如何动态更改网络摄像头的照片时间戳

时间:2017-11-11 作者:Syntax Error

我有一个WordPress的“天气摄像头”页面。该页面显示了我们网络摄像头的最新10张照片(共3张网络摄像头)。通过FTP将图像上传到服务器,每10分钟更新一次图像。图像从image0开始编号。jpg至图9。jpg和正在以循环方式更新:例如image7。jpg在10分钟后上传,图片8。jpg在10分钟后上传,图片9。jpg在10分钟后上传到image0。jpg已上载等。

我想按时间顺序显示图像,以及照片下面提到的拍摄/上传时间。

正在使用该网站的旧版本(在Umbraco)。aspx(作为一名C#程序员,我完全理解),但我对它一无所知。php。旧版本将调用一个函数,该函数将返回文件名前缀为的字符串列表?然后是自开始日期以来的刻度数。然后,网站将动态地使用该列表以正确的时间以正确的顺序显示图像,并确保没有使用缓存的图像。

此类返回列表(示例值)的示例:image0。jpg?12345678,图9。jpg?12345677,图8。jpg?12345676,图7。jpg?1234565等。

这个12345678将转换回日期,并导致浏览器重新加载图像,而不是使用缓存的图像。

如何使用WordPress/php实现同样的功能。

告诉你我的意思:

旧站点=http://www.glidingcanterbury.org.nz/weather-cam.aspx新站点=http://canterburyglidingclub.nz/weather-cam/

您会注意到,新站点只是静态显示日期,图像不是按时间顺序排列的(它们只是从9降到0)。

我想写一些C#代码,在我自己的个人服务器上运行,返回排序后的列表和时间戳,然后手动调整MyWeathercam。我的个人服务器上的html文件(这当然可以),但链接到MyWeathercam。an中的html使其看起来完全错误,链接到MyWeathercam也是如此。html而不是页面,因为它会完全忽略已安装的主题。

也许我的问题也可能是:如何在WordPress页面中动态“内联”代码?或者:如何动态(以编程方式)更新WordPress页面的内容?

我希望这有点道理。非常感谢您的帮助。

谢谢

1 个回复
最合适的回答,由SO网友:mmm 整理而成

要生成galerie,可以将此短代码放入文件中functions.php 主题的(如果主题可以更新,请创建子主题)

add_shortcode("webcamPictures", function ($attr, $content, $tag) {

    $picturesByLine = 5;

    $directoryBase = realpath(__DIR__ . "/../../../images");
    $urlBase = home_url("/images");


    // reading pictures

    $picturesRaw = glob("$directoryBase/{$attr["type"]}*");

    $pictures = [];


    foreach ($picturesRaw as $p) {

        $pictures[] = [
            "filename" => basename($p),
            "mtime" => filemtime($p),
        ];

    }


    // sorting

    usort($pictures, function ($p1, $p2) {
        return $p2["mtime"] - $p1["mtime"];
    });


    // display

    $firstPicture = array_shift($pictures);
    $firstPictureURL = "$urlBase/{$firstPicture["filename"]}";

    $picturesEnd = count($pictures) - 1;


    ob_start();

    ?>
        <table class=" table table-hover"
            style="table-layout: fixed; border-collapse: separate; border-spacing: 30px;">
            <tbody>
                <tr>
                    <td style="bgcolor="#EAEAEA"><a
                        href="<?php echo esc_html($firstPictureURL);?>"><img
                            src="<?php echo esc_html($firstPictureURL);?>"></a>
                    </td>
                </tr>
            </tbody>
        </table>
        <table class=" table table-hover"
            style="table-layout: fixed; border-collapse: separate; border-spacing: 30px;">
            <tbody>
                <tr>

                    <?php foreach ($pictures as $index => $p) {?>

                        <?php
                            $pictureURL = "$urlBase/{$p["filename"]}";
                        ?>

                        <td style="width: 20%;" bgcolor="#EAEAEA"><a
                            href="<?php echo esc_html($pictureURL);?>"><img
                                src="<?php echo esc_html($pictureURL);?>"></a>
                        </td>


                        <?php
                            if (    (0 === ($index + 1) % $picturesByLine)
                                &&  ($index !== $picturesEnd)
                            ) {
                        ?>
                            </tr><tr>
                        <?php }?>


                    <?php }?>

                </tr>

            </tbody>
        </table>


    <?php

    $content = ob_get_clean();


    return $content;

});
要使用此短代码,请将其放入页面内容中:[webcamPictures type="CGCHdCam1"]

结束