Как создать popup с динамическим контентом из метаданных поста в WordPress

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

Почему использовать динамический контент в popup важнее, чем статичный

Статичные popups — это простое решение, где контент жёстко прописан в настройках плагина или шаблоне. Однако такой подход не гибок, особенно если сайт содержит много записей с индивидуальными данными. Динамические popups позволяют:

  • Экономить время — не надо создавать popup для каждого поста вручную.
  • Повысить релевантность — пользователи видят информацию, актуальную именно для текущей страницы или записи.
  • Улучшить UX — popup адаптируется под контекст.

Для реализации динамического контента в popup нам понадобятся навыки работы с AJAX, метаданными WordPress и JavaScript.

Как получить метаданные поста для показа в popup

Метаданные — это дополнительная информация, которую разработчики и контент-менеджеры прикрепляют к записи через пользовательские поля. Например, у вас есть поле price или special_offer. Для вывода этих данных в popup, нужно их сначала получить.

Самый простой способ — использовать функцию get_post_meta(). Пример:

$price = get_post_meta(get_the_ID(), 'price', true);

Это вернёт значение поля price текущего поста.

Но поскольку popup обычно вызывается на стороне клиента, стоит реализовать AJAX-запрос, который передаст ID поста и вернёт нужные метаданные.

Создание AJAX обработчика для динамического popup

Добавим в файл functions.php темы или в отдельный плагин следующий код для обработки AJAX-запроса:

add_action('wp_ajax_wppopup_get_meta', 'wppopup_get_meta_callback');
add_action('wp_ajax_nopriv_wppopup_get_meta', 'wppopup_get_meta_callback');

function wppopup_get_meta_callback() {
    $post_id = intval($_POST['post_id']);
    if (!$post_id) {
        wp_send_json_error('Неверный ID поста');
    }

    $price = get_post_meta($post_id, 'price', true);
    $offer = get_post_meta($post_id, 'special_offer', true);

    $response = array(
        'price' => $price,
        'special_offer' => $offer
    );

    wp_send_json_success($response);
}

Этот код регистрирует AJAX-обработчик, который получает ID поста из запроса и возвращает JSON с метаданными.

JavaScript для вызова popup и загрузки данных

Добавим скрипт, который будет отправлять AJAX-запрос и показывать popup с полученными данными. Пример на jQuery:

jQuery(document).ready(function($) {
    $('.wppopup-trigger').on('click', function(e) {
        e.preventDefault();
        var postId = $(this).data('post-id');

        $.ajax({
            url: wppopup_ajax_object.ajax_url,
            type: 'POST',
            data: {
                action: 'wppopup_get_meta',
                post_id: postId
            },
            success: function(response) {
                if(response.success) {
                    var content = '<p>Цена: ' + response.data.price + '</p>' +
                                  '<p>Специальное предложение: ' + response.data.special_offer + '</p>';
                    $('#wppopup-container').html(content).fadeIn();
                } else {
                    alert('Ошибка загрузки данных');
                }
            }
        });
    });

    $('#wppopup-close').on('click', function() {
        $('#wppopup-container').fadeOut();
    });
});

Для корректной работы важно локализовать скрипт и передать параметр ajax_url из PHP. Пример:

wp_enqueue_script('wppopup-script', get_template_directory_uri() . '/js/wppopup.js', array('jquery'), '1.0', true);
wp_localize_script('wppopup-script', 'wppopup_ajax_object', array(
    'ajax_url' => admin_url('admin-ajax.php')
));

HTML-разметка popup

Для отображения popup добавьте в шаблон следующий блок:

<div id="wppopup-container" style="display:none; position:fixed; top:20%; left:50%; transform:translateX(-50%); background:#fff; padding:20px; box-shadow:0 0 15px rgba(0,0,0,0.3); z-index:10000; max-width:300px;">
    <button id="wppopup-close" style="float:right; background:none; border:none; font-size:20px; cursor:pointer;">&times;</button>
    <div id="wppopup-content"></div>
</div>

А для вызова popup на кнопках или ссылках используйте класс wppopup-trigger и атрибут data-post-id с ID записи:

<a href="#" class="wppopup-trigger" data-post-id="123">Показать предложение</a>

Рекомендации по плагинам для управления popup с динамическим контентом

Если вы предпочитаете использовать готовые решения, обратите внимание на плагины, которые позволяют вставлять PHP-код или shortcodes в popup и поддерживают AJAX:

  • My Popup — удобный плагин для создания popup с возможностью динамического контента.
  • Clearfy Pro — оптимизация и расширенные возможности для кастомизации popup и других элементов сайта.

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

Итоги и лучшие практики динамических popup в WordPress

Динамические popup, загружающие метаданные поста через AJAX, — это мощный инструмент для повышения вовлечённости пользователей и персонализации сайта. Ключевые моменты реализации:

  • Используйте get_post_meta() для получения нужных данных.
  • Обрабатывайте запросы через AJAX для загрузки контента без перезагрузки страницы.
  • Локализуйте скрипты для передачи admin-ajax.php.
  • Обеспечьте удобный и незаметный для пользователя интерфейс popup.
  • Используйте плагины с поддержкой динамического контента, чтобы облегчить разработку.

Такой подход позволит создавать адаптивные и персонализированные всплывающие окна, которые улучшат UX и помогут в маркетинге вашего сайта на WordPress.

Как создать popup с отключением по клиентскому устройству в WordPress
29.03.2026
Как создать выпадающее меню в WordPress с помощью JavaScript
20.11.2025
Как создать popup на основании User Agent в WordPress
09.04.2026
Как создать popup с автоматическим отключением при низкой производительности сайта в WordPress
23.04.2026
Как создать popup в WordPress на основе отправки формы без перезагрузки
19.02.2026