Создание динамических QR-кодов в WordPress с помощью PHP

В современных веб-проектах QR-коды становятся всё популярнее для быстрого доступа к информации, ссылкам или контактам. В WordPress нередко возникает задача динамически генерировать QR-коды для страниц, товаров, купонов или пользовательских данных. В этой статье мы рассмотрим, как создать динамические QR-коды в WordPress с помощью PHP, используя библиотеки и примеры кода.

Почему стоит использовать динамические QR-коды в WordPress

Динамические QR-коды отличаются от статичных тем, что содержат не зашитую в коде информацию, а ссылку или идентификатор, который может меняться или вести на динамический ресурс. Это удобно, например, для маркетинговых акций, персонализированных ссылок или отслеживания переходов.

В WordPress динамические QR-коды позволяют:

  • Автоматически генерировать коды для новых страниц и постов.
  • Встраивать QR-коды в письма или на страницы без ручного создания.
  • Обновлять содержимое, на которое ссылается QR-код, без изменения самого изображения.

Варианты реализации генерации QR-кодов на PHP

Для генерации QR-кодов на PHP существуют готовые библиотеки. Самая популярная и простая в использовании — Endroid QR Code. Она поддерживает разные форматы и параметры кодов.

Другие варианты:

  • phpqrcode — легковесная библиотека без сторонних зависимостей.
  • Simple Qrcode — обёртка для Laravel, но может использоваться и в чистом PHP.

Для WordPress удобнее всего использовать endroid/qr-code, так как она позволяет гибко управлять стилем и размером QR-кода.

Установка библиотеки Endroid QR Code в WordPress

Для работы с Composer в WordPress рекомендуется использовать плагин WPComposer от WPSHOP. Это позволит удобно интегрировать сторонние библиотеки.

После установки WPComposer выполните в терминале команду:

composer require endroid/qr-code

Теперь библиотека доступна для использования в вашем коде.

Пример функции для генерации QR-кода в WordPress

Создадим функцию wpcoder_generate_qr_code(), которая будет принимать URL и возвращать путь к PNG-файлу с QR-кодом.

function wpcoder_generate_qr_code($url, $size = 300) {
    if (!class_exists('\Endroid\QrCode\QrCode')) {
        return new WP_Error('missing_library', 'Библиотека Endroid QR Code не установлена');
    }

    $upload_dir = wp_upload_dir();
    $dir = $upload_dir['basedir'] . '/wpcoder-qr';
    if (!file_exists($dir)) {
        wp_mkdir_p($dir);
    }

    $filename = $dir . '/' . md5($url) . '.png';

    if (!file_exists($filename)) {
        $qrCode = new \Endroid\QrCode\QrCode($url);
        $qrCode->setSize($size);
        $qrCode->writeFile($filename);
    }

    return str_replace($upload_dir['basedir'], $upload_dir['baseurl'], $filename);
}

Эта функция кэширует результат в папке uploads, чтобы не генерировать QR-код заново при каждом вызове.

Использование функции в шаблоне WordPress

Допустим, нужно вывести QR-код для текущей записи. В файле шаблона можно добавить:

global $post;
$url = get_permalink($post->ID);
$qr_code_url = wpcoder_generate_qr_code($url);
echo '<img src="' . esc_url($qr_code_url) . '" alt="QR-код" width="300" height="300" />';

Так вы получите динамический QR-код с ссылкой на текущую страницу.

Автоматическая вставка QR-кодов в контент с помощью шорткода

Для удобства добавим шорткод [wpcoder_qr], который будет генерировать QR-код для текущей страницы или для указанного URL:

function wpcoder_qr_shortcode($atts) {
    $atts = shortcode_atts(array(
        'url' => '',
        'size' => 300
    ), $atts, 'wpcoder_qr');

    $url = $atts['url'] ?: get_permalink();
    $size = intval($atts['size']);

    $qr_code_url = wpcoder_generate_qr_code($url, $size);
    if (is_wp_error($qr_code_url)) {
        return '<span>Ошибка генерации QR-кода</span>';
    }

    return '<img src="' . esc_url($qr_code_url) . '" alt="QR-код" width="' . $size . '" height="' . $size . '" />';
}
add_shortcode('wpcoder_qr', 'wpcoder_qr_shortcode');

Теперь можно вставлять в записи и страницы [wpcoder_qr] или [wpcoder_qr url="https://example.com" size="200"].

Оптимизация и кеширование QR-кодов

Генерация QR-кодов — ресурсозатратная операция. В примерах выше реализовано простое кеширование в файловой системе WordPress. Для проектов с большим трафиком можно:

  • Использовать CDN для доставки изображений.
  • Генерировать QR-коды заранее при сохранении записей через хук save_post.
  • Удалять устаревшие QR-коды при изменении URL.

Пример генерации QR-кода при сохранении записи:

function wpcoder_generate_qr_on_save($post_id) {
    if (wp_is_post_revision($post_id)) {
        return;
    }

    $url = get_permalink($post_id);
    wpcoder_generate_qr_code($url);
}
add_action('save_post', 'wpcoder_generate_qr_on_save');

Дополнительные возможности и настройки

Библиотека Endroid QR Code позволяет задавать:

  • Цвета и фон QR-кода.
  • Угол поворота и отступы.
  • Добавление логотипа в центр кода.

Чтобы добавить логотип, используйте метод setLogoPath():

$qrCode->setLogoPath(WP_CONTENT_DIR . '/uploads/logo.png');

Это удобно для брендирования QR-кодов на вашем сайте.

Рекомендации по безопасности

При генерации QR-кодов убедитесь, что URL безопасен и не содержит вредоносных данных. Используйте встроенные функции WordPress для валидации и очистки входных данных, например esc_url().

Автоматизация создания и удаления пользовательских метаполей в WordPress
10.04.2026
Как автоматизировать создание и удаление тематических категорий в WordPress
21.01.2026
WordPress отладка проблем с кэшем и кэш-плагинами: практические решения
08.12.2025
Удаление старых мета-полей в WordPress при удалении записи
02.02.2026
Успешная интеграция WooCommerce с Битрикс24 в WordPress
10.01.2026