WordPress主题正确使用Bing每日一图

前面分享了一片关于使用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登录页面

接下来你就可以发挥自己的想象力了,可以放在WordPress主题的任何地方。可以作为登陆界面背景图使用。也可以做成短代码,放在文章或者页面中。

下载代码

这是一个php文件,可以放在本地php环境进行测试。

链接:https://pan.baidu.com/s/1LMrHarv7IW2KsXcSQUByVQ
提取码:g4we

发表评论

游客欢迎您123

“WordPress主题正确使用Bing每日一图” 有 4条评论

    • php的方法就可以实现,就是为了提高安全性