在Wordpress网站上,我想每隔十分钟后自动更改背景图像。所以,这个脚本应该完全这样做:
random_img.php
:
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Content-Type: image/jpeg');
$result = array_merge(glob("../../uploads/*x1500.jpg"), glob("../../uploads/*1500x*.jpg"));
$seed = floor(time()/600);
srand($seed);
$random_image = $result[rand(0, length($result)-1)];
header('Location:'.$random_image.'');
我有两个问题:
a)代码是否正确?我试着把它输入到孩子的functions.php
中,它给了我一些关于array_merge的错误,但我看不出有什么问题。
b)我需要你的帮助,了解如何以及在何处调用该功能(意思是:将图片放入网站)。是否像
background: url(random_img.php) no-repeat center center fixed;
进入CSS文件或调用是否必须进入header.php
的头部?如何正确说明?
我想,我已经尝试了两种方法,而且没有成功。
答案 0 :(得分:0)
如果您要直接从脚本输出图像,请执行以下操作:
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Content-Type: image/jpeg');
$result = array_merge(glob("../../uploads/*x1500.jpg"), glob("../../uploads/*1500x*.jpg"));
$seed = floor(time()/600);
srand($seed);
$random_image = $result[rand(0, length($result)-1)];
header('Content-Length: ' . filesize($random_image));
readfile($random_image);
CSS应该保持不变。 直接访问随机图像文件以测试它是否有效。
答案 1 :(得分:0)
您是否考虑过/可以使用javascript吗?
如果是这样,你可以做一些像(在jQuery中):
$(document).ready(function()
{
setInterval(function()
{
$("body").css("background","new-background");
},10000);
});
编辑:认为这是10秒,而不是10分钟。无论如何,只需将10000
更改为600000
10分钟
如果您只想在PHP中执行此操作,那么您必须意识到,如果没有javascript,代码将仅在加载页面时运行。因此,我建议设置一个会话,其中包含上次更改背景的时间戳,每次加载页面时,检查上一个时间戳是否超过10分钟,并引入新的背景。
date_default_timezone_set("UTC");
session_start();
$pic = array( "../is/images/*x1500.jpg",
"../is/images/*1500x*.jpg" );
$pic_num = count($pic);
if( isset($_SESSION["bg_change"]) && ($_SESSION["bg_change"]-600)>time() )
{
# They have already visited and it has been 10 minutes since last background change
# Update the BG image
$_SESSION["bg_img"] = $pic[ mt_rand(1,$pic_num)-1 ];
$_SESSION["bg_change"] = time();
}
else
{
# They have either not visited, or its not time to change
# Give them the last set background or the default
$_SESSION["bg_img"] = ( isset($_SESSION["bg_img"]) ? $_SESSION["bg_img"] : "../path/to/default/background" );
}
然后,稍后在该文档中,假设它出现在HTML& CSS,您需要回显$_SESSION["bg_img"]
来代替背景样式规则。
...
<style type="text/css">
body
{
background: <?= $_SESSION["bg_img"] ?>;
}
</style>