为WordPress设置bing的每日背景图片

bing的首页背景图片很有质感,并且每日更新,下面的代码能将其提取并输出成图像文件:


<?php
// 读取bing中国的每日背景图片并输出

// 读取指定地址的图片,并返回给浏览器
function readImg($imgurl = 'assets/images/header.jpg') {
if ($imgurl) {
header('Content-Type: image/JPEG');
@ob_end_clean();
@readfile($imgurl);
@ob_flush();
@flush();
exit();
} else {
exit('error');
}
}

// 获取bing中国的图片地址,
// 注意:匹配模式规则可能会随着时间推移而改变。
function getImgUrl($url = 'http://cn.bing.com') {
// 打开bing中国首页
$str = file_get_contents($url);
// 获取其中的图片地址
if (preg_match('/g_img={url: "(.*?)"/s', $str, $matches)) {
// 拼接完整图片地址
$imgUrl = 'http://cn.bing.com' . $matches[1];
return $imgUrl;
} else {
// 如果获取失败,则返回假
return $imgUrl = '';
}
}

// 将获取的图片地址写入到文件中
function writeUrl($imgUrl, $filename) {
// 打开或创建文件
if ($fileHandle = fopen($filename, 'w')) {
fwrite($fileHandle, $imgUrl);
fclose($fileHandle);
} else {
echo '创建文件失败,请检查权限。';
exit();
}
}

// 获取地址文件日期,并与当前日期进行对比
function checkFileDate($filename) {
//获取文件修改时间
$bingdate = filemtime($filename);
$bingdateymd = date("Y-m-d", $bingdate);
$todaydateymd = date("Y-m-d");
if ($bingdateymd == $todaydateymd) {
return true;
} else {
return false;
}
}

// 读取本地文件中的图片地址信息
function readUrl($filename) {
$handle = fopen($filename, "r");
$url = fread($handle, filesize($filename));
fclose($handle);
return $url;
}

// 根据判断结果,得到地址
function getUrl($flag, $filename) {
if ($flag) {
$url = readUrl($filename);
return $url;
} else {
$url = getImgUrl();
writeUrl($url, $filename);
return $url;
}
}

$filename = 'bingbg.txt';
// 获取当天图片地址
$url = getUrl(checkFileDate($filename), $filename);
// 读取图片并输出
readImg($url);

然后在主题的图片位置,直接调用即可,如上述代码的文件名为bing.php的话,这样调用即可:

'default-image' => get_parent_theme_file_uri('bing.php'),
'url' => '%s/bing.php',

“为WordPress设置bing的每日背景图片”的一个回复

评论已关闭。