Как создать динамическую выводную страницу в WordPress с помощью мета записей

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

Что такое мета записи и зачем они нужны в выводе страниц

Мета записи (post meta) — это дополнительные данные, которые можно прикрепить к любой записи (post) или типу записи (custom post type) в WordPress. Они позволяют хранить структурированную информацию, например, цену товара, рейтинг, дату события, адрес и многое другое.

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

Например, на сайте wpstock.ru можно создать страницу, которая выводит только записи, у которых мета поле price меньше 1000 рублей, или только записи с определённым статусом.

Создание WP_Query с мета запросами: базовые примеры

Для начала разберём простой пример — вывод записей с мета полем wpstock_price меньше 1000. Для этого нужно использовать параметр meta_query в WP_Query.

$args = [
    'post_type' => 'post',
    'meta_query' => [
        [
            'key' => 'wpstock_price',
            'value' => 1000,
            'compare' => '<',
            'type' => 'NUMERIC'
        ]
    ]
];
$query = new WP_Query($args);

Данный запрос вернёт все записи, у которых в мета поле wpstock_price значение меньше 1000. Очень важно указывать параметр type, чтобы сравнение происходило как по числам, иначе сравнение будет строковым и результат может быть неправильным.

Далее можно вывести эти записи в цикле:

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        $price = get_post_meta(get_the_ID(), 'wpstock_price', true);
        echo '<h3>' . get_the_title() . '</h3>';
        echo '<p>Цена: ' . esc_html($price) . '</p>';
    }
    wp_reset_postdata();
} else {
    echo '<p>Записей не найдено.</p>';
}

Как создать отдельный шаблон для динамической выводной страницы

Чтобы выводить записи с мета фильтром на отдельной странице, создадим шаблон страницы в вашей теме. Назовём его, например, page-wpstock-filter.php.

В начале файла должен быть стандартный заголовок шаблона:

<?php
/*
Template Name: WPStock Фильтр по мета
*/
?>

Далее создаём WP_Query с нужными параметрами, о которых говорили выше. Пример полного шаблона:

<?php
/* Template Name: WPStock Фильтр по мета */
get_header();

$args = [
    'post_type' => 'post',
    'meta_query' => [
        [
            'key' => 'wpstock_price',
            'value' => 1000,
            'compare' => '<',
            'type' => 'NUMERIC'
        ]
    ]
];
$query = new WP_Query($args);
?>

<main>
    <h1>Записи с ценой меньше 1000</h1>
    <div class="wpstock-list">
        <?php if ($query->have_posts()) : ?>
            <ul>
            <?php while ($query->have_posts()) : $query->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - Цена: <?php echo esc_html(get_post_meta(get_the_ID(), 'wpstock_price', true)); ?></li>
            <?php endwhile; ?>
            </ul>
            <?php wp_reset_postdata(); ?>
        <?php else : ?>
            <p>Записей не найдено.</p>
        <?php endif; ?>
    </div>
</main>

<?php get_footer(); ?>

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

Использование плагинов для управления мета полями и фильтрации

Реализовать мета поля вручную можно через код, но удобнее и быстрее использовать плагины. Вот несколько полезных:

  • Advanced Custom Fields (ACF) — позволяет создавать и управлять мета полями через удобный интерфейс.
  • Meta Box — аналог ACF с поддержкой кастомных типов полей и расширений.
  • FacetWP — плагин для гибкой фильтрации записей по мета данным, таксономиям и другим параметрам.

Например, с ACF можно быстро создать поле wpstock_price и заполнить данные при редактировании записи. После этого использовать код из примеров выше для выборки.

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

Как сделать универсальный фильтр с несколькими условиями в WP_Query

Иногда нужно фильтровать записи не по одному, а по нескольким мета полям, например, по цене и рейтингу. Для этого в meta_query передаётся массив массивов с условиями, а параметр relation определяет логику (AND или OR).

$args = [
    'post_type' => 'post',
    'meta_query' => [
        'relation' => 'AND',
        [
            'key' => 'wpstock_price',
            'value' => 1000,
            'compare' => '<',
            'type' => 'NUMERIC'
        ],
        [
            'key' => 'wpstock_rating',
            'value' => 4,
            'compare' => '>=',
            'type' => 'NUMERIC'
        ]
    ]
];
$query = new WP_Query($args);

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

Оптимизация запросов с мета полями

Запросы по мета данным могут быть ресурсоёмкими, особенно при большом количестве записей. Чтобы избежать проблем с производительностью:

  • Используйте индексы в базе данных для таблицы wp_postmeta.
  • Кешируйте результаты запросов с помощью встроенного Object Cache или плагинов кеширования.
  • По возможности сокращайте выборку полей и избегайте сложных сравнений.

Если сайт wpstock.ru начнёт активно использовать такие фильтры, стоит обратить внимание на масштабируемость и правильное структурирование данных.

Заключение

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

Как удалить все посты в WordPress через WP-CLI: эффективное решение для очистки сайта
06.12.2025
Автоматизация создания резервных копий WordPress с помощью плагинов
08.03.2026
Удаление товаров WooCommerce по дате и статусу через PHP
24.05.2026
Как создать автоматическое отображение отзывов в WordPress
15.01.2026
Отключение оплаты в WooCommerce для товаров с заданным статусом
31.05.2026