Как добавить вывод данных из метаполя в WordPress теме

Зачем выводить данные из метаполей в WordPress теме

Метаполя (custom fields) в WordPress позволяют хранить дополнительную информацию о записи, странице или любом другом типе записи. Часто стандартных полей WordPress недостаточно для реализации сложных проектов, и метаполя становятся незаменимым инструментом для расширения функционала.

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

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

Как получить значение метаполя в шаблоне темы WordPress

Для получения значения метаполя в шаблоне WordPress используется функция get_post_meta(). С её помощью можно получить как одиночное значение, так и массив значений метаполя.

Синтаксис функции:

get_post_meta($post_id, $meta_key, $single);
  • $post_id — ID записи, у которой хотим получить метаполе.
  • $meta_key — ключ (название) метаполя.
  • $single — если true, вернёт строку, если false — массив.

Пример функции с префиксом из домена wpkpi для получения и вывода метаполя "rating":

function wpkpi_get_post_rating($post_id) {
    $rating = get_post_meta($post_id, 'rating', true);
    return $rating ? esc_html($rating) : 'Нет рейтинга';
}

// В шаблоне темы
$post_id = get_the_ID();
echo '<div class="post-rating">Рейтинг: ' . wpkpi_get_post_rating($post_id) . '</div>';

Обработка отсутствующих или пустых значений

Очень важно проверять, существует ли метаполе и не пустое ли оно, чтобы избежать вывода пустого блока на странице. В примере выше функция возвращает строку 'Нет рейтинга', если метаполе пустое или отсутствует.

Также желательно использовать функцию esc_html() для экранирования вывода, чтобы избежать XSS-уязвимостей.

Управление метаполями с помощью плагинов

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

Самые популярные плагины для кастомных полей:

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

Пример использования ACF для вывода метаполя "rating":

if (function_exists('get_field')) {
    $rating = get_field('rating');
    if ($rating) {
        echo '<div class="post-rating">Рейтинг: ' . esc_html($rating) . '</div>';
    } else {
        echo '<div class="post-rating">Рейтинг отсутствует</div>';
    }
}

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

Создание собственного метабокса для метаполей в админке без плагина

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

Пример создания метабокса с полем "rating" в functions.php темы:

function wpkpi_add_rating_metabox() {
    add_meta_box(
        'wpkpi_rating_metabox',
        'Рейтинг записи',
        'wpkpi_render_rating_metabox',
        'post',
        'side',
        'default'
    );
}
add_action('add_meta_boxes', 'wpkpi_add_rating_metabox');

function wpkpi_render_rating_metabox($post) {
    wp_nonce_field('wpkpi_save_rating', 'wpkpi_rating_nonce');
    $value = get_post_meta($post->ID, '_wpkpi_rating', true);
    echo '<label for="wpkpi_rating_field">Рейтинг (0-10):</label> ';
    echo '<input type="number" id="wpkpi_rating_field" name="wpkpi_rating_field" value="' . esc_attr($value) . '" min="0" max="10" />';
}

function wpkpi_save_rating_metabox($post_id) {
    if (!isset($_POST['wpkpi_rating_nonce']) || !wp_verify_nonce($_POST['wpkpi_rating_nonce'], 'wpkpi_save_rating')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (isset($_POST['wpkpi_rating_field'])) {
        $rating = intval($_POST['wpkpi_rating_field']);
        update_post_meta($post_id, '_wpkpi_rating', $rating);
    }
}
add_action('save_post', 'wpkpi_save_rating_metabox');

После добавления этого кода в functions.php в админке при редактировании записи появится поле "Рейтинг", куда можно вводить число от 0 до 10. Значение будет сохранено в метаполе _wpkpi_rating.

Для вывода этого значения в теме используйте функцию:

function wpkpi_get_post_rating($post_id) {
    $rating = get_post_meta($post_id, '_wpkpi_rating', true);
    return $rating ? esc_html($rating) : 'Рейтинг не установлен';
}

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

Метаполя позволяют добавить структурированные данные (schema.org) на страницы сайта, что положительно влияет на SEO и отображение в поисковой выдаче.

Например, для страниц с обзорами можно вывести рейтинг в формате JSON-LD:

function wpkpi_print_rating_schema() {
    if (is_single()) {
        $post_id = get_the_ID();
        $rating = get_post_meta($post_id, '_wpkpi_rating', true);
        if ($rating) {
            $schema = [
                '@context' => 'https://schema.org',
                '@type' => 'Review',
                'itemReviewed' => [
                    '@type' => 'Thing',
                    'name' => get_the_title($post_id),
                ],
                'reviewRating' => [
                    '@type' => 'Rating',
                    'ratingValue' => $rating,
                    'bestRating' => '10',
                    'worstRating' => '0',
                ],
            ];
            echo '<script type="application/ld+json">' . wp_json_encode($schema) . '</script>';
        }
    }
}
add_action('wp_head', 'wpkpi_print_rating_schema');

Это позволит поисковым системам лучше понимать содержимое страницы и может улучшить видимость сайта.

Оптимизация и безопасность при работе с метаполями

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

  • Используйте кэширование, если выводите много метаданных на странице.
  • Экранируйте вывод с помощью esc_html(), esc_attr() или других функций WordPress.
  • Проверяйте и валидируйте данные при сохранении метаполей.
  • Избегайте частых запросов к базе без необходимости, используйте функции WordPress для оптимизации.

Для примера, можно использовать Transients API для кэширования значений метаполей.

Вывод

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

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

Как автоматизировать управление решениями в WordPress с помощью WPKPI
06.02.2026
Как создать автоматический сбор данных KPI в WordPress с примерами кода
12.03.2026
Как избежать проблем с подключением стилей и скриптов в WordPress
27.01.2026
WooCommerce: автоматическое удаление заказов по истечении срока
07.05.2026
Автоматическое удаление товаров WooCommerce со статусом "Черновик" старше 30 дней
11.05.2026