必应搜索的图片是什么这里就不说了,昨天渣渣龙在群里艾特要我把Bing
的每日一图作为网站背景图
我所使用的C7V5
主题首页确实有一个大图,我经常换的图也是从Bing
历史图中获取到好看的图片,保存得到的
这个功能还是很简单的,看一下CSS
,直接在header
中增加行内样式就可以替换首页背景图
那就写一下吧,最近Bing
又换了图片链接格式
作死获取
每次有请求,就去获取一下Bing
的接口,直接引用Bing
的图片地址
虽然我有使用方糖每天推送一次Bing的图片,但是也就访问一次,影响不大
但是这样每次有访客就请求一次Bing
的接口,这样感觉迟早会被ban
掉IP
,所以不作死就不会死吧
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;
}
很简单就获取到了图片地址,想直接引用就这么干
素质获取
提高一下素质,不要写这种代码,增加一个缓存,或者保存文件到本地,引用自己本地图片地址
这里需要用到一个WordPress
自带的函数wp_upload_dir()
返回WordPress
上传目录的地址,是一个数组,包含一系列与上传地址相关的信息
$upload_dir = wp_upload_dir();
提供如下信息给你
‘path’ – 上传目录的服务器绝对路径,通常以反斜杠(/)开头
‘url’ – 上传目录的完整URL
‘subdir’ – 子目录名称,通常是以年/月形式组织的目录地址,例如/2019/03
‘basedir’ – 上传目录的服务器绝对路径,不包含子目录
‘baseurl’ – 上传目录的完整URL,不包含子目录
‘error’ – 报错信息
为了避免有些人修改了对应的路径,所以使用此函数获取,我这里选择保存文件到本地使用
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;
}
获取图片的任务完成了,怎么在页面获取呢
<?php if(!empty(get_bing_img())){echo "style='background-image: url(".get_bing_img().")'";} ?>
加在需要设置背景的地方就ok
了,更多WordPress
代码段见Github仓库
倒数第二个代码放在什么位置啊fun吗
@佛系软件 是的 functions.php
另外一种办法,我是直接通过PHP获取API的数据,输出302到Bing原图地址。访问的是Bing本身的图片地址,并不会对服务器有任何影响。另外微软的服务不存在Ban指定IP的风险!
@范明明 并没有什么用。。。能获取一次为什么要一直获取。不存在ban的情况也要养成习惯
@范明明 大哥你那个代码提示Warning: preg_match(): The /e modifier is no longer supported, use preg_replace_callback instead。而且网站评论一直显示网络错误原因。正常网络环境啊
@佛系软件 这是函数废弃了,代码老旧
感觉worldpress现在用不习惯
@陌生人 我觉得还好吧, 😥
这个厉害!!!
@wordpress建站吧 低调低调 😛