AWS S3 bucket webhosted using Github Action
Github Action for deployment of Static-website to AWS S3 Bucket
Everything you need to know about ...
QR codes are widely used on websites where they generally represent the URL of the website. When someone wants to read the content of your web page on their mobile phone, they can scan the QR code and which opens the URL in a browser instead of manually typing a long URL.
There are several types of QR codes, Model 1, Micro, IQR, SQRC and LogoQ. Model 1 is the most common type of QR code type and it’s the one we’ll be using in our example.
In my example I’ll name the plugin ‘qr-code-post’, you can name it anything you wish. You’ll first need to create a directory with plugin name and then a PHP file with the same plugin name.
qr-code-post/
- qr-code-post.php
Put this code in the awesome-qr-code.php file:
<?php
/*
Plugin Name: QR Code Post
Plugin URI: Website link of Plugin
Description: Adds QR Code to WordPress Posts
Version: 1.0
Author: your name
Author URI: http://twitter.com
*/
Option1:
Download and unpack QR Code Generator inside your plugin directory. You will then have a file named qrcode.php
in your directory.
Option2:
Inside your Plugin Directory create qrcode.php
file and copy and paste the code below to your qrcode.php
<?php
/*************************************************************
* This script is developed by Arturs Sosins aka ar2rsawseen, http://webcodingeasy.com
* Fee free to distribute and modify code, but keep reference to its creator
*
* This class generate QR [Quick Response] codes with proper metadata for mobile phones
* using google chart api http://chart.apis.google.com
* Here are sources with free QR code reading software for mobile phones:
* http://reader.kaywa.com/
* http://www.quickmark.com.tw/En/basic/download.asp
* http://code.google.com/p/zxing/
*
* For more information, examples and online documentation visit:
* http://webcodingeasy.com/PHP-classes/QR-code-generator-class
**************************************************************/
class qrcode
{
private $data;
//creating code with link mtadata
public function link($url){
if (preg_match('/^http:\/\//', $url) || preg_match('/^https:\/\//', $url))
{
$this->data = $url;
}
else
{
$this->data = "http://".$url;
}
}
//creating code with bookmark metadata
public function bookmark($title, $url){
$this->data = "MEBKM:TITLE:".$title.";URL:".$url.";;";
}
//creating text qr code
public function text($text){
$this->data = $text;
}
//creatng code with sms metadata
public function sms($phone, $text){
$this->data = "SMSTO:".$phone.":".$text;
}
//creating code with phone
public function phone_number($phone){
$this->data = "TEL:".$phone;
}
//creating code with mecard metadata
public function contact_info($name, $address, $phone, $email){
$this->data = "MECARD:N:".$name.";ADR:".$address.";TEL:".$phone.";EMAIL:".$email.";;";
}
//creating code wth email metadata
public function email($email, $subject, $message){
$this->data = "MATMSG:TO:".$email.";SUB:".$subject.";BODY:".$message.";;";
}
//creating code with geo location metadata
public function geo($lat, $lon, $height){
$this->data = "GEO:".$lat.",".$lon.",".$height;
}
//creating code with wifi configuration metadata
public function wifi($type, $ssid, $pass){
$this->data = "WIFI:T:".$type.";S:".$ssid.";P:".$pass.";;";
}
//creating code with i-appli activating meta data
public function iappli($adf, $cmd, $param){
$param_str = "";
foreach($param as $val)
{
$param_str .= "PARAM:".$val["name"].",".$val["value"].";";
}
$this->data = "LAPL:ADFURL:".$adf.";CMD:".$cmd.";".$param_str.";";
}
//creating code with gif or jpg image, or smf or MFi of ToruCa files as content
public function content($type, $size, $content){
$this->data = "CNTS:TYPE:".$type.";LNG:".$size.";BODY:".$content.";;";
}
//getting image
public function get_image($size = 150, $EC_level = 'L', $margin = '0'){
$ch = curl_init();
$this->data = urlencode($this->data);
curl_setopt($ch, CURLOPT_URL, 'http://chart.apis.google.com/chart');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'chs='.$size.'x'.$size.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$this->data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
//getting link for image
public function get_link($size = 150, $EC_level = 'L', $margin = '0'){
$this->data = urlencode($this->data);
return 'http://chart.apis.google.com/chart?chs='.$size.'x'.$size.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$this->data;
}
//forcing image download
public function download_image($file){
header('Content-Disposition: attachment; filename=QRcode.png');
header('Content-Type: image/png');
echo $file;
}
//save image to server
public function save_image($file, $path = "./QRcode.png"){
file_put_contents($path, $file);
}
}
?>
Now we need to include that file inside qr-code-post.php
right after the Plugin information:
include("qrcode.php");
Next, we need to add a QR code image to the end of every WordPress post. For that, we need to filter the post content and add HTML to the end of the content.
We can do this using ‘the_content’ filter. The the_content filter is used to filter the content of the post after it is retrieved from the database and before it is printed onto the screen. Note that the filter function must return the content after it is finished processing, or site visitors will see a blank page and other plugins that are also filtering the content may generate errors.
function qr_code($content)
{
$url = get_permalink();
$qr = new qrcode();
$qr->text($url);
$html = "<p><b>QR Code:</b></p><p><img src='".$qr->get_link()."' border='0'/></p>";
$content .= $html;
return $content;
}
add_filter("the_content", "qr_code");
Let’s breakdown the above code:
qr_code
is the filter function that takes the post content and filters it before the output is produced.get_permalink
function is used to get the complete URL of the current post.As you can see, it’s fairly simple if you want to do this yourself. However, you’d most likely only write code to generate a QR code if you are creating a plugin or theme. If you want to integrate QR codes to an existing website, then it would be much easier to install a ready made QR code plugin.