前面分享了一片关于使用Bing搜索每日图片的一篇文章,详见《WordPress主题使用bing每日一图》。这篇文章介绍了获取和使用Bing搜索每日一图的方法:即把代码存为PHP格式,这个PHP文件就相当于图片,你可以在需要的地方直接引用这个php文件。但是由于是直接引用PHP文件,所以对安全问题比较担心,而且使用Theme Check插件检测主题时,出现了警告错误,如下:
WARNING: file_get_contents was found in the file bing.php File operations should use the WP_Filesystem methods instead of direct PHP filesystem calls.
意思是说文件操作应使用WP_Filesystem方法替代php的file_get_contents方法。
解决办法
使用过Bing搜索的人都知道。Bing每日一图非常棒,而且每天都不一样。于是就想办法解决问题。在网上找到另外一种使用必应搜索每日一题的方法,代码如下:
/**
* 获取bing图片
*
* @author 智慧宫
* @link https://lerm.net
*/
$url = 'http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=';
$resolution = '1920x1080';//图片尺寸
$data = file_get_contents( $url );
$json = json_decode( trim( $data ), true );
if ( $json ) {
$images = $json['images'];
foreach ( $images as $image ) {
$urlbase = $image['urlbase'];
$image_url = 'http://www.bing.com' . $urlbase . '_' . $resolution . '.jpg';
$copyright = $image['copyright'];
}
}
以上代码也可以获取到Bing搜索每日一图,而且增加可以自定义图片的尺寸,生成图片的URL地址,可以直接引用。但是file_get_contents()
依然会被报出前面的警告错误。
查阅官方文档https://codex.wordpress.org/Filesystem_API,使用WP_Filesystem最主要的原因就是安全。解决的办法就是将file_get_contents()替换成WP_Filesystem方法,具体方法如下:
将上一段代码中的$data = file_get_contents( $url );
替换成
$request = wp_remote_get($url);
$data = wp_remote_retrieve_body( $request );
然后使用Theme Check检查主题,没有出现报错,问题圆满解决。以上的代码会生成一个图片的url地址,例如:
http://www.bing.com/az/hprichbg/rb/SingleCrane_ZH-CN11987665683_1920x1080.jpg。
将代码放在你需要引用的地方即可。
功能演示
接下来你就可以发挥自己的想象力了,可以放在WordPress主题的任何地方。可以作为登陆界面背景图使用。也可以做成短代码,放在文章或者页面中。
下载代码
这是一个php文件,可以放在本地php环境进行测试。
链接:https://pan.baidu.com/s/1LMrHarv7IW2KsXcSQUByVQ
提取码:g4we
蛮不错的,就是一直没想到用在什么地方
一直搞不清楚WP_Filesystem怎么用
php的方法就可以实现,就是为了提高安全性
链接:https://pan.baidu.com/s/1LMrHarv7IW2KsXcSQUByVQ
提取码:g4we