WordPress 页面自动生成二维码
目前在移动设备上浏览网页越来越普遍,那么给每个网页都生成二维码就越来越重要。下面微言心语就分享自己给每个网页生成二维码的方法; 主要核心代码参考小蝴蝶的《缓存远程二维码图片到本地》
不过原代码比较古老,二维码生成服务地址已经打不开,而且调用代码混乱,使用起来不方便,我就将代码改良。
一、在网站根目录建立缓存文件夹
在网站根目录建立一个叫 qrcode 的新文件夹,确保有写入权限(755或777),用于保存图片
二、将下面代码扔到function.php
代码里注释已经非常清楚,大家自行检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /*Wordpress页面自动生成二维码 *url:https://wuean.com/wordpress-automatically-generate-qr-code.html *<a href="https://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"/>'; } |
三、调用代码
在需要显示二维码图片的地方调用以下代码
1 | <?php post_qr(); ?> |
最后,CSS就不多说了,根据自己需要修改
下面是本地测试的效果:
1、谷歌二维码地址改成QRserver,众所周知的原因,谷歌二维码服务打不开。
2、将原代码里的繁杂的调用代码,都扔到function.php里,简化了调用代码。用起来更方面,也更灵活。