首页 Wordpress WordPress 页面自动生成二维码

WordPress 页面自动生成二维码

目前在移动设备上浏览网页越来越普遍,那么给每个网页都生成二维码就越来越重要。下面微言心语就分享自己给每个网页生成二维码的方法; 主要核心代码参考小蝴蝶《缓存远程二维码图片到本地》 不过原代码比较古老,二维码生成服务地址已经打不开,而且调用代码混乱,使用起来不方便,我就将代码改良。

一、在网站根目录建立缓存文件夹

在网站根目录建立一个叫 qrcode 的新文件夹,确保有写入权限(755或777),用于保存图片

二、将下面代码扔到function.php

代码里注释已经非常清楚,大家自行检查
php
/*Wordpress页面自动生成二维码
 *url:http://wuean.com/wordpress-automatically-generate-qr-code.html
 *<a href="http://wuean.com/">微言心语</a> 整理优化
*/
//写入本地缓存
function get_qr($url,$path,$qrpic){
	set_time_limit (10); //设置十秒超时
	$destination_folder = $path?$path.'/':'';
	$localname = $destination_folder .$qrpic;
	$file = fopen ($url, "rb"); //fopen函数的r+模式: 读写方式打开 文件指针指向文件头
	if ($file) {
		$newf = fopen ($localname, "wb"); // w+,读写方式打开 文件指针指向文件头 如果文件不存在则尝试创建之
		if ($newf)
			while(!feof($file)) {
				fwrite( $newf, fread($file, 1024 * 2 ), 1024 * 2 ); //写入文件,fread控制文件最大的大小,这里是2M
			}
	}
	if ($file) {
		fclose($file);  //关闭fopen打开的文件
	}
	if ($newf) {
		fclose($newf);
	}
}
//页面二维码
function post_qr(){
$imgsize = 150; //二维码图片大小
		if (is_single() || is_page()) $imgname = get_the_id();//使用文章/页面ID命名图片
		elseif (is_home() || is_front_page())  $imgname = 'home';//首页使用home命名
		elseif(is_category()) $imgname = 'cat-'.get_query_var('cat');//分类使用cat-ID 命名
		elseif(is_tag()) $imgname = 'tag-'.get_query_var('tag_id');//标签使用tag-ID 命名
		$localqr =  ABSPATH .'qrcode/'.$imgname.'.jpg';
		if (!file_exists($localqr)) {//如果图片已经存在,则不会再次保存
			get_qr( "http://api.qrserver.com/v1/create-qr-code/?size=".$imgsize."x".$imgsize."&data=".get_permalink() ,"qrcode", $imgname.".jpg");
		}
		echo '<img src="/'.home_url().'/qrcode/'.$imgname.'.jpg" width="'.$imgsize.'" height="'.$imgsize.'" alt="QR Code"/>';
	}

三、调用代码

在需要显示二维码图片的地方调用以下代码
php
<?php post_qr(); ?>
最后,CSS就不多说了,根据自己需要修改 下面是本地测试的效果:
题外话
我主要是原将代码作了以下的优化: 1、谷歌二维码地址改成QRserver,众所周知的原因,谷歌二维码服务打不开。 2、将原代码里的繁杂的调用代码,都扔到function.php里,简化了调用代码。用起来更方面,也更灵活。

相关推荐

发表回复

邮箱地址不会被公开。