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

Иногда в проектах на WordPress возникает задача отображать разные части контента на одной странице в зависимости от определённых условий: роли пользователя, устройства, параметров URL или других факторов. В этой статье подробно разберём, как реализовать условное разделение контента на страницах WordPress с примерами кода и рекомендациями по плагинам.

Почему важно разделять контент по условиям?

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

  • Показать приветствие только зарегистрированным пользователям
  • Вывести специальные предложения для мобильных устройств
  • Отобразить разные тексты в зависимости от параметров в URL

Безусловный вывод всего подряд увеличивает нагрузку на пользователя и снижает эффективность коммуникации.

Условный вывод контента через PHP в шаблонах WordPress

Самый прямой способ — использовать условные теги WordPress и писать логику в файлах темы. Например, условие для отображения контента только для авторизованных пользователей:

if ( is_user_logged_in() ) {
    echo '<p>Добро пожаловать, уважаемый пользователь!</p>';
} else {
    echo '<p>Пожалуйста, войдите, чтобы увидеть эксклюзивный контент.</p>';
}

Другой пример — вывод контента в зависимости от параметра в URL (например, ?promo=true):

if ( isset($_GET['promo']) && $_GET['promo'] === 'true' ) {
    echo '<div class="promo-block">Специальное предложение для вас!</div>';
} else {
    echo '<div>Обычный контент страницы</div>';
}

Для более сложной логики стоит использовать функции, чтобы не захламлять шаблоны:

function wpmax_condition_content() {
    if ( is_user_logged_in() ) {
        return '<p>Только для зарегистрированных пользователей</p>';
    }
    if ( wp_is_mobile() ) {
        return '<p>Контент для мобильных устройств</p>';
    }
    return '<p>Общий контент для всех</p>';
}

В шаблоне вызов будет таким: echo wpmax_condition_content();

Использование шорткодов для условного контента

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

function wpmax_shortcode_logged_in( $atts, $content = null ) {
    if ( is_user_logged_in() && ! is_null( $content ) && ! is_feed() ) {
        return $content;
    }
    return '';
}
add_shortcode( 'logged_in', 'wpmax_shortcode_logged_in' );

Использование в редакторе:

[logged_in]Добро пожаловать, зарегистрированный пользователь![/logged_in]

Аналогично можно сделать для гостей или других условий, расширяя логику.

Плагины для условного вывода контента

Если хочется обойтись без кода, есть несколько полезных плагинов для условного контента:

  • Content Control — позволяет скрывать или показывать блоки по ролям, статусу входа, устройствам.
  • Conditional Blocks — расширяет редактор Gutenberg, добавляя блоки с условиями.
  • WP Show Hide Content — простой шорткод на основе условий.

Например, с плагином Content Control можно создать правила показа блоков без программирования.

Пример решения: условный вывод блока с AJAX-загрузкой

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

add_action( 'wp_enqueue_scripts', 'wpmax_enqueue_scripts' );
function wpmax_enqueue_scripts() {
    wp_enqueue_script( 'wpmax-ajax-script', get_template_directory_uri() . '/js/wpmax-ajax.js', array('jquery'), null, true );
    wp_localize_script( 'wpmax-ajax-script', 'wpmax_ajax_obj', array(
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'nonce' => wp_create_nonce( 'wpmax_nonce' )
    ));
}

add_action( 'wp_ajax_wpmax_get_content', 'wpmax_get_content' );
add_action( 'wp_ajax_nopriv_wpmax_get_content', 'wpmax_get_content' );
function wpmax_get_content() {
    check_ajax_referer( 'wpmax_nonce', 'nonce' );
    if ( is_user_logged_in() ) {
        wp_send_json_success( array( 'content' => 'Привет, зарегистрированный пользователь!' ) );
    } else {
        wp_send_json_success( array( 'content' => 'Пожалуйста, войдите, чтобы увидеть контент.' ) );
    }
    wp_die();
}

В JavaScript (файл wpmax-ajax.js) нужно написать:

jQuery(document).ready(function($) {
    $.post(wpmax_ajax_obj.ajax_url, {
        action: 'wpmax_get_content',
        nonce: wpmax_ajax_obj.nonce
    }, function(response) {
        if (response.success) {
            $('#wpmax-conditional-content').html(response.data.content);
        }
    });
});

И в шаблоне добавить <div id="wpmax-conditional-content"></div> — туда загрузится нужный контент.

Советы по организации условного контента

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

  • Выносите логику в отдельные функции с префиксом, например, wpmax_
  • Используйте кеширование результатов, если условия сложные
  • Минимизируйте количество условных запросов к базе и вычислений
  • Для редактируемого контента применяйте шорткоды или плагины с визуальным интерфейсом

Так вы сохраните удобство поддержки и гибкость сайта.

Итог

Разделение контента на страницах WordPress по условиям — мощный инструмент для персонализации и оптимизации сайта. Вы можете решать задачи как через простые условные теги и шорткоды, так и с помощью AJAX и готовых плагинов. Главное — продумать логику и организовать код так, чтобы он был понятен и удобен для поддержки.

WooCommerce: как отключить сравнение товаров в личном кабинете
18.05.2026
Как создать уникальные метаданные для каждого типа записей WordPress
16.01.2026
Как удалить верстку WordPress без нарушения функциональности
10.11.2025
Оптимальная аутентификация для REST API WordPress
09.01.2026
WooCommerce: как избежать конфликтов между кастомными плагинами
23.06.2026