Как использовать WPengine для автоматизации хранения вариантов постов в WordPress

В современных проектах на WordPress часто возникает задача хранения нескольких вариантов одного поста или страницы — например, для A/B тестирования, временного сохранения изменений или создания черновиков с разными вариантами контента. В этой статье мы рассмотрим, как автоматизировать хранение вариантов постов в WordPress, используя возможности WPengine и кастомный код.

Почему важно хранить варианты постов в WordPress

Часто при работе с контентом возникают ситуации, когда нужно подготовить несколько версий одной и той же записи. Это может быть полезно для:

  • Проведения A/B тестов разных заголовков и текстов.
  • Сохранения нескольких черновиков для согласования с редакторами.
  • Подготовки временных версий для сезонных акций или событий.

Стандартный функционал WordPress предлагает ревизии постов, но он не всегда удобен для управления разными вариантами с возможностью быстрого переключения. Поэтому мы создадим решение, которое будет работать как система хранения альтернативных версий постов.

Использование пользовательских типов записей и метаданных для вариантов

Для начала создадим отдельный пользовательский тип записей для вариантов постов. Это позволит нам отделить основные записи от альтернативных вариантов и обеспечит удобный интерфейс для управления.

Добавим следующий код в файл functions.php вашей темы или в плагин:

function wpengine_register_post_variants_cpt() {
    $args = array(
        'labels' => array(
            'name' => 'Варианты постов',
            'singular_name' => 'Вариант поста',
            'add_new_item' => 'Добавить новый вариант поста'
        ),
        'public' => false,
        'show_ui' => true,
        'supports' => array('title', 'editor', 'custom-fields'),
        'capability_type' => 'post',
        'hierarchical' => false,
    );
    register_post_type('post_variant', $args);
}
add_action('init', 'wpengine_register_post_variants_cpt');

Этот код создаст новый тип записей post_variant, который не будет виден на публичной части сайта, но будет доступен в админке для управления вариантами.

Далее для связи варианта с основным постом используем метаполе _wpengine_variant_of, в котором будем хранить ID основного поста.

Создание интерфейса сохранения варианта поста

Чтобы ускорить работу редакторов, можно добавить метабокс на страницу редактирования поста, который позволит создавать и переключаться между вариантами.

function wpengine_add_variant_metabox() {
    add_meta_box('wpengine_variant_box', 'Варианты постов', 'wpengine_render_variant_metabox', 'post', 'side', 'high');
}
add_action('add_meta_boxes', 'wpengine_add_variant_metabox');

function wpengine_render_variant_metabox($post) {
    $variants = get_posts(array(
        'post_type' => 'post_variant',
        'meta_key' => '_wpengine_variant_of',
        'meta_value' => $post->ID,
        'posts_per_page' => -1
    ));
    echo '<ul>';
    foreach ($variants as $variant) {
        echo '<li><a href="edit.php?post_type=post_variant&page=edit&post=' . $variant->ID . '">' . esc_html($variant->post_title) . '</a></li>';
    }
    echo '</ul>';
    echo '<a href="#" id="wpengine-create-variant" class="button">Создать новый вариант</a>';
    echo '<script>
    jQuery(document).ready(function($) {
        $("#wpengine-create-variant").on("click", function(e) {
            e.preventDefault();
            $.post(ajaxurl, {
                action: "wpengine_create_variant",
                post_id: ' . $post->ID . '
            }, function(response) {
                if(response.success) {
                    window.location.href = response.data.edit_link;
                } else {
                    alert("Ошибка при создании варианта.");
                }
            });
        });
    });
    </script>';
}

function wpengine_ajax_create_variant() {
    if (!current_user_can('edit_posts')) {
        wp_send_json_error();
    }
    $post_id = intval($_POST['post_id']);
    $post = get_post($post_id);
    if (!$post) {
        wp_send_json_error();
    }
    $variant_post = array(
        'post_title' => $post->post_title . ' (Вариант)',
        'post_type' => 'post_variant',
        'post_status' => 'draft',
        'post_content' => $post->post_content
    );
    $new_variant_id = wp_insert_post($variant_post);
    if (is_wp_error($new_variant_id)) {
        wp_send_json_error();
    }
    update_post_meta($new_variant_id, '_wpengine_variant_of', $post_id);
    $edit_link = get_edit_post_link($new_variant_id, '');
    wp_send_json_success(array('edit_link' => $edit_link));
}
add_action('wp_ajax_wpengine_create_variant', 'wpengine_ajax_create_variant');

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

Автоматическая публикация выбранного варианта на сайте

Чтобы на сайте выводился не основной пост, а выбранный вариант, можно использовать фильтр the_content и функцию, которая будет подменять контент поста на контент варианта, если он задан.

function wpengine_filter_content_by_variant($content) {
    if (is_singular('post')) {
        global $post;
        $variant_id = get_post_meta($post->ID, '_wpengine_active_variant', true);
        if ($variant_id) {
            $variant_post = get_post($variant_id);
            if ($variant_post && $variant_post->post_status === 'publish') {
                return apply_filters('the_content', $variant_post->post_content);
            }
        }
    }
    return $content;
}
add_filter('the_content', 'wpengine_filter_content_by_variant');

Для управления активным вариантом можно добавить пользовательские поля или отдельный интерфейс в админке, где выбирается ID варианта для публикации.

Использование WPengine для расширенной автоматизации и безопасности

WPengine предоставляет мощные инструменты для автоматизации рабочих процессов, в том числе:

  • Планировщик задач WP-Cron для автоматического переключения вариантов по расписанию.
  • Мониторинг производительности и логирование, чтобы отслеживать использование вариантов и их влияние на сайт.
  • Инструменты бэкапа и восстановления, чтобы безопасно экспериментировать с вариантами без потери данных.

Например, можно создать задачу, которая каждую ночь будет переключать активный вариант на следующий, предварительно проверяя его статус и качество. Это позволит автоматически проводить A/B тестирование.

Пример планировщика переключения варианта

function wpengine_schedule_variant_switch() {
    if (!wp_next_scheduled('wpengine_variant_switch_event')) {
        wp_schedule_event(time(), 'daily', 'wpengine_variant_switch_event');
    }
}
add_action('wp', 'wpengine_schedule_variant_switch');

function wpengine_handle_variant_switch() {
    // Здесь логика выбора следующего варианта и обновления метаполя _wpengine_active_variant
}
add_action('wpengine_variant_switch_event', 'wpengine_handle_variant_switch');

Этот пример показывает, как создать ежедневное событие для переключения вариантов. Логику выбора следующего варианта можно адаптировать под ваши задачи.

Интеграция с плагином Clearfy Pro для оптимизации работы с вариантами

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

Выводы и рекомендации

Автоматизация хранения и управления вариантами постов в WordPress с помощью WPengine позволяет значительно расширить стандартный функционал и повысить эффективность работы с контентом. Используйте кастомные типы записей, метаполя и Ajax-запросы для удобного интерфейса редактора, а также планировщик WP-Cron для автоматизации задач. Интегрируйте решения с инструментами оптимизации, такими как Clearfy Pro, чтобы сохранить производительность сайта на высоком уровне.

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

WooCommerce: решение проблемы не работающих вариативных атрибутов в описании товара
16.05.2026
WordPress: разделение кода для разных устройств — практические решения
30.12.2025
Автоматизация отключения неиспользуемых плагинов в WordPress на WPengine
26.01.2026
Как сделать автоматическое удаление старого и неиспользуемого кода в WordPress
16.04.2026
Оптимизация WordPress для быстрой загрузки сайта: практические методы и примеры
05.11.2025