اضافه کردن QR Code اختصاصی به صفحه هر محصول، یکی از سادهترین و حرفهایترین روشهاست تا لینک محصولت همیشه قابل دسترس باشد؛ چه روی موبایل، چه روی چاپ، چه برای اشتراکگذاری. با این شورتکد میتوانی بدون هیچ افزونه اضافی، یک QR کاملاً داینامیک بسازی که برای هر محصول بهصورت خودکار تولید میشود و کاربر میتواند آن را اسکن یا دانلود کند. این کد امکان سفارشیسازی کامل دارد؛ از اندازه تصویر و فرمت خروجی گرفته تا نمایش متن دلخواه بالای QR. حتی میتوانی Tracking را فعال کنی تا بفهمی هر QR از کجا اسکن شده و چه میزان ورودی از طریق بروشورها و محتوای چاپی دریافت کردهای. تنها کاری که لازم است انجام بدهی این است که شورتکد را در صفحه محصول قرار بدهی و از آن لحظه به بعد، هر محصول QR مخصوص خودش را خواهد داشت. این روش نهتنها سرعت لود سایت را کاهش نمیدهد، بلکه به دلیل وجود قابلیت کش داخلی، همیشه سریع و بهینه کار میکند و ظاهر حرفهایتری به صفحههایت میدهد. در نهایت، این شورتکد یک راهکار تمیز، سبک و قابل اعتماد است که تجربه کاربر را بهتر میکند و به افزایش فروش کمک میکند؛ بدون نیاز به هیچ افزونهای.
چرا اضافه کردن QR Code به صفحه محصول مهم است؟
-
مشتری میتواند لینک محصول را سریع اسکن کند
-
برای چاپ کاتالوگ و بروشور فوقالعاده کاربردی است
-
امکان ردیابی کمپینهای چاپی از طریق UTM
-
ظاهر حرفهایتر برای صفحه محصول
-
افزایش اشتراکگذاری و فروش محصولات
کافیست شورتکدی بهت میدم که با قرار دادن آن داخل صفحهٔ تک (Single) هر محصول، بهصورت خودکار برای همان محصول یک QR اختصاصی تولید و نمایش میدهد. کد را کافیست در فایل functions.php قالب یا در یک پلاگین کوچک قرار دهی؛ سپس در محتوای صفحهٔ محصول از شورتکد استفاده کن.
add_shortcode('product_qrcode', function ($atts = []) {
if ( ! function_exists('is_product') || ! is_product() ) {
return '';
}
global $post;
$defaults = [
'size' => 50,
'css' => 50,
'format' => 'svg',
'ecc' => 'M',
'margin' => 0,
'align' => 'center',
'label' => '' ,
'track' => '0',
'cache' => '1'
];
$opt = shortcode_atts($defaults, $atts, 'product_qrcode');
$qr_px = max(80, intval($opt['size']));
$qr_css = max(60, intval($opt['css']));
$qr_format = (strtolower($opt['format']) === 'svg') ? 'svg' : 'png';
$eccValid = ['L','M','Q','H'];
$qr_ecc = in_array(strtoupper($opt['ecc']), $eccValid, true) ? strtoupper($opt['ecc']) : 'M';
$qr_margin = max(0, intval($opt['margin']));
$qr_align = (in_array($opt['align'], ['left','center','right'], true)) ? $opt['align'] : 'center';
$qr_label = esc_html(trim(wp_strip_all_tags($opt['label'])));
$qr_track = in_array(strtolower($opt['track']), ['1','true','yes'], true);
$qr_cache = in_array(strtolower($opt['cache']), ['1','true','yes'], true);
$target = get_permalink($post->ID);
if ($qr_track) {
$target = add_query_arg([
'utm_source' => 'avin_qr',
'utm_medium' => 'print',
'utm_campaign' => 'product_' . $post->ID,
], $target);
}
$remote_api = add_query_arg([
'size' => "{$qr_px}x{$qr_px}",
'data' => $target,
'margin' => $qr_margin,
'ecc' => $qr_ecc,
'format' => $qr_format,
], 'https://api.qrserver.com/v1/create-qr-code/');
$qr_src = $remote_api;
$dl_name = sanitize_title(get_the_title($post->ID)) . "-qr." . $qr_format;
if ($qr_cache) {
$upload = wp_upload_dir();
if (!empty($upload['basedir']) && !empty($upload['baseurl'])) {
$avin_dir = trailingslashit($upload['basedir']) . 'avin-qrcodes';
$avin_url = trailingslashit($upload['baseurl']) . 'avin-qrcodes';
if (!file_exists($avin_dir)) {
wp_mkdir_p($avin_dir);
}
$hash = md5($target . $qr_px . $qr_margin . $qr_ecc . $qr_format);
$filename = $hash . '.' . $qr_format;
$filepath = $avin_dir . '/' . $filename;
$file_url = $avin_url . '/' . $filename;
if (!file_exists($filepath)) {
$request = wp_remote_get($remote_api, ['timeout' => 15]);
if (!is_wp_error($request) && wp_remote_retrieve_response_code($request) === 200) {
$body = wp_remote_retrieve_body($request);
if (!empty($body)) {
file_put_contents($filepath, $body);
$qr_src = $file_url;
}
}
} else {
$qr_src = $file_url;
}
$dl_name = $filename;
}
}
$html = '<div class="avin-qr-wrapper" style="margin:2px 0;text-align:' . $qr_align . ';">';
if ($qr_label !== '') {
$html .= '<div class="avin-qr-label" style="font-size:14px;margin-bottom:8px;">' . $qr_label . '</div>';
}
$html .= '<a href="' . esc_url($qr_src) . '" download="' . esc_attr($dl_name) . '">';
$html .= '<img src="' . esc_url($qr_src) . '" alt="QR - ' . esc_attr(get_the_title($post->ID)) . '" width="' . $qr_css . '" height="' . $qr_css . '" loading="lazy" decoding="async">';
$html .= '</a>';
$html .= '</div>';
return $html;
});