前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >获取Bing图片作为WordPress等网站首页背景图

获取Bing图片作为WordPress等网站首页背景图

作者头像
沈唁
发布2019-05-22 15:12:23
1.2K0
发布2019-05-22 15:12:23
举报
文章被收录于专栏:沈唁志沈唁志

必应搜索的图片是什么这里就不说了,昨天渣渣龙在群里艾特要我把Bing的每日一图作为网站背景图

我所使用的C7V5主题首页确实有一个大图,我经常换的图也是从Bing历史图中获取到好看的图片,保存得到的

这个功能还是很简单的,看一下CSS,直接在header中增加行内样式就可以替换首页背景图

那就写一下吧,最近Bing又换了图片链接格式

作死获取

每次有请求,就去获取一下Bing的接口,直接引用Bing的图片地址

虽然我有使用方糖每天推送一次 Bing 的图片,但是也就访问一次,影响不大

但是这样每次有访客就请求一次Bing的接口,这样感觉迟早会被banIP,所以不作死就不会死吧

代码语言:javascript
复制
function get_bing_img()
{
	// 从 bing 获取数据
	$res = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
	// 转成数组
	$bingArr = json_decode($res, true);
	$src = "https://cn.bing.com{$bingArr['images'][0]['urlbase']}_1920x1080.jpg";
	return $src;
}

很简单就获取到了图片地址,想直接引用就这么干 

:mrgreen:
:mrgreen:

素质获取

提高一下素质,不要写这种代码,增加一个缓存,或者保存文件到本地,引用自己本地图片地址

这里需要用到一个WordPress自带的函数wp_upload_dir()

返回WordPress上传目录的地址,是一个数组,包含一系列与上传地址相关的信息

代码语言:javascript
复制
$upload_dir = wp_upload_dir();

提供如下信息给你

‘path’ – 上传目录的服务器绝对路径,通常以反斜杠(/)开头 ‘url’ – 上传目录的完整 URL ‘subdir’ – 子目录名称,通常是以年/月形式组织的目录地址,例如/2019/03 ‘basedir’ – 上传目录的服务器绝对路径,不包含子目录 ‘baseurl’ – 上传目录的完整 URL,不包含子目录 ‘error’ – 报错信息

为了避免有些人修改了对应的路径,所以使用此函数获取,我这里选择保存文件到本地使用

代码语言:javascript
复制
function get_bing_img_cache()
{
	// 获取 wp 路径
	$imgDir = wp_upload_dir();
	$bingDir = $imgDir['basedir'].'/bing';
	if (!file_exists($bingDir)) {
		mkdir($bingDir, 0755);
	}
	$today = mktime(0,0,0,date('m'),date('d'),date('Y'));
	$yesterday = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
	// 是否存在今日图片
	if (!file_exists($bingDir.'/'.$today.'.jpg')) {
		// 从 bing 获取数据
		$res = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
		// 转成数组
		$bingArr = json_decode($res, true);
		$bing_url = "https://cn.bing.com{$bingArr['images'][0]['urlbase']}_1920x1080.jpg";
		$content = file_get_contents($bing_url);
		file_put_contents($bingDir.'/'.$today.'.jpg', $content); // 写入今天的
		unlink($bingDir.'/'.$yesterday.'jpg'); //删除昨天的
		$src = $imgDir['baseurl'].'/bing/'.$yesterday.'.jpg';
	} else {
		// 存在
		$src = $imgDir['baseurl'].'/bing/'.$today.'.jpg';
	}
	return $src;
}

获取图片的任务完成了,怎么在页面获取呢

代码语言:javascript
复制
<?php if(!empty(get_bing_img())){echo "style='background-image: url(".get_bing_img().")'";} ?>

加在需要设置背景的地方就ok了,更多WordPress代码段见Github 仓库

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作死获取
  • 素质获取
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档