一、在网站根目录建立缓存文件夹
在网站根目录建立一个叫 qrcode 的新文件夹,确保有写入权限(755或777),用于保存图片二、将下面代码扔到function.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 post_qr(); ?>
题外话
我主要是原将代码作了以下的优化:
1、谷歌二维码地址改成QRserver,众所周知的原因,谷歌二维码服务打不开。
2、将原代码里的繁杂的调用代码,都扔到function.php里,简化了调用代码。用起来更方面,也更灵活。
