如何根据当前时间自动更改特色图像

时间:2015-05-04 12:31:52

标签: php html sql wordpress image

我使用静态首页自定义wordpress网站。我正在使用自适应/动态主题。

我想要做的是使首页加载的精选图片根据时间不同而不同。例如:假设有人在下午6点访问我的网站,我希望首页上的精选图片能够显示夜空的图片。但是,如果有人在下午6点之前(早在凌晨5点)访问我的网站,那么特色图片应该会显示一天的天空图片。

我到处寻找一个插件为我做这个,但似乎并不存在。我也在无休止地搜索这个,找不到具体的解决方案,但我能够找到资源让我入门。

通过php和sql从外部源添加特色图片: http://www.wpexplorer.com/wordpress-featured-image-url/ (只使用和更新UPDATE语句并更改数据库中的图像URL会更容易)

在给定时区内获取时间 Get current date, given a timezone in PHP?

我本来可以使用提供的链接中的很多代码来实现我想要的但是我遇到了一个问题。我无法在wordpress数据库中找到特色图像的图像网址。我查了_postmeta和_posts都没有运气。相反,它只是显示最初与主题一起出现但后来被更改的图像的图像URL。这可能与我已经使用Jetpack插件(光子)从wordpress.com服务器加载我的图像这一事实有关,但我已关闭该功能但仍无法找到图像数据库中的网址。

由于我不是php和sql的专业人士,如果有人能提出解决方案,那么指向正确的方向会更好,甚至更好。我知道这不是一个简单的实现,但绝对值得,因为其他地方找不到解决方案。

2 个答案:

答案 0 :(得分:0)

这可以通过javascript轻松完成..

这是我做的一个简单示例: https://jsfiddle.net/p2snuf1a/

var date = new Date();
var hours = date.getHours();

var sunset_img= "http://at-cdn-s01.audiotool.com/2014/06/03/documents/85NwUJbwC0Gx0rbiKePSWWcKUqhmdP/0/cover256x256-46428e19514b49058125b21b8107c2eb.jpg";

var night_img = "https://pbs.twimg.com/profile_images/2973095145/47f74748e0c6240db5e0b3034af6da16.jpeg";


if(hours > 18){
    document.getElementById('feature_img').setAttribute('src', night_img);
}
else{
    document.getElementById('feature_img').setAttribute('src', sunset_img);
}

基本上,它获取当前小时,为图像链接设置一些变量(这些也可以是本地存储的图像)。然后它检查小时是大于还是小于某个时间,所以18是下午6点。

您可以为其他时间/图像组合添加更多'else if()'选项。

如果您的图片位于css中,则可以使用'.sytle'代替.setAttribute

答案 1 :(得分:0)

这是一个简单易懂的任务,但我可以看到它的一个问题。 PHP将使用它自己的服务器时间来计算白天和黑夜。因此,如果您的服务器位于纽约,并且有人正在从印度浏览您的网站,它将根据纽约的时间显示图像。因此,要实现用户的本地时间,您必须使用javascript或使用地理位置定位api 来显示给定位置的确切时间。这是一个例子。

http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo

现在让我们假设您想要根据服务器时间更改图像。因此,白天和晚上只有2张图像,硬编码应该不是问题。 (如果您想拥有自定义字段,可以查看“高级自定义字段”插件,这是一个很棒的插件,可以在您的帖子中添加自定义字段。)

我没有测试过这段代码,但它应该有效。

date_default_timezone_set('America/Chicago');

$am_pm = date('a');

if($am_pm == 'am'){?>
  <img src="<?php echo get_template_directory();?>/images/am.png" alt="Good Morning">
<?php }elseif($am_pm == 'pm'){?>
  <img src="<?php echo get_template_directory();?>/images/pm.png" alt="Good Evening">
<?php }?>