我有一个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页面的内容?
我希望这有点道理。非常感谢您的帮助。
谢谢
最合适的回答,由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"]