Inserire un QR code nei post di WordPress richiede l'utilizzo di una libreria PHP esterna.
Possiamo utilizzare la libreria PHP QR Code. La libreria richiede la presenza dell'estensione GD con supporto JPEG e PNG e PHP 5 o superiore.
Dopo aver effettuato il download e scompattato il file compresso, carichiamo la libreria in una directory del nostro tema. Sempre nel nostro tema, creiamo una directory che andrà a contenere i file PNG dei QR code generati dalla libreria. Volendo potete anche creare la directory sotto /wp-content/uploads. La cosa importante in questo caso è che PHP abbia i permessi per scrivere in quella directory.
Quindi in functions.php
creiamo la seguente funzione di utility:
function my_create_qr_code() {
global $post;
// Includo la libreria. Qui sto usando il path del tema
require_once( TEMPLATEPATH . '/percorso/phpqrcode/qrlib.php' );
// Path assoluto alla directory dove verranno salvate le immagini.
$qr_images_dir = TEMPLATEPATH . '/percorso/qr-images/';
// Se salvate in wp-content/uploads diventa: $qr_images_dir = ABSPATH . 'wp-content/uploads/qr-images/';
// URL assoluto alla directory dove verranno salvate le immagini.
$qr_images_dir_url = get_template_directory_uri() . '/percorso/qr-images/';
// Se salvate in wp-content/uploads diventa: $qr_images_dir_url = site_url( '/wp-content/uploads/qr-images/', 'http' );
// Permalink del post
$permalink = get_permalink( $post->ID );
// Nome del file immagine del QR code: usando lo slug del post è unico e facilmente rintracciabile
$file_name = $post->post_name . '.png';
// Contenuto del QR code
$code_contents = $permalink;
if( !file_exists( $qr_images_dir . $file_name ) ) {
QRcode::png( $code_contents, $qr_images_dir. $file_name, QR_ECLEVEL_L, 3 );
echo '<div class="qr-code"><img src="' . $qr_images_dir_url . $file_name . '" alt="" /></div>';
} else {
echo '<div class="qr-code"><img src="' . $qr_images_dir_url . $file_name . '" alt="" /></div>';
}
}
Possiamo quindi usare la nostra funzione nel file single.php
del tema:
the_content();
my_create_qr_code();
La libreria ha molte opzioni. Vi rimando agli esempi del sito ufficiale se volete approfondire l'argomento.