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

前面分享了一片关于使用Bing搜索每日图片的一篇文章,详见《WordPress主题使用bing每日一图》。这篇文章介绍了获取和使用Bing搜索每日一图的方法:即把代码存为PHP格式,这个PHP文件就相当于图片,你可以在需要的地方直接引用这个php文件。但是由于是直接引用PHP文件,所以对安全问题比较担心,而且使用Theme Check插件检测主题时,出现了警告错误,如下:
WARNING: file_get_contents was found in the file <strong>bing.php</strong> 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 http://lerm.net
*/
$url        = 'http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=';
$resolution = '1920x1080';//图片尺寸

// 多语言选项
$locales = array(
	'en-US',
	'zh-CN',
	'ja-JP',
	'en-AU',
	'en-UK',
	'de-DE',
	'en-NZ',
);

// 参数
foreach ( $locales as $lang ) {
	$URL  = $url . $lang;
	$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';

		}
	}
}

以上代码也可以获取到Bing搜索每日一图,而且增加可以自定义图片的尺寸,生成图片的URL地址,可以直接引用。但是file_get_contents()依然会被报出前面的警告错误。

查阅官方文档https://codex.wordpress.org/Filesystem_API,使用WP_Filesystem最主要的原因就是安全。解决的办法就是将file_get_contents()替换成WP_Filesystem方法,具体方法如下:
将上一段代码中的$json = json_decode(trim($data), true);替换成

$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。将代码放在你需要引用的地方即可。

功能演示

[bing_image]

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

下载代码

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

百度云盘:http://pan.baidu.com/s/1boK2dHl

如果您觉得有用就请点赞和分享
版权声明: 本文由 智慧宫 整理发表,转载请注明出处

发表评论

    1. 智慧宫 回复

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

  1. 闲鱼 回复

    蛮不错的,就是一直没想到用在什么地方