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

Зачем нужны произвольные поля в комментариях WordPress

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

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

Добавление нового поля в форму комментариев

Для начала нам нужно добавить новое поле в стандартную форму комментариев. Сделаем это с помощью фильтра comment_form_default_fields. Ниже пример функции, которая добавляет поле «Город» в форму:

function wp_pro_add_comment_field($fields) {
    $fields['city'] = 
        '<p class="comment-form-city">'
      . '<label for="city">Город</label>'
      . '<input id="city" name="city" type="text" size="30" />'
      . '</p>';
    return $fields;
}
add_filter('comment_form_default_fields', 'wp_pro_add_comment_field');

Эта функция добавляет простой текстовый input с id и name = "city". Вы можете добавить любое другое поле, например select или checkbox, изменив HTML соответственно.

Валидация и сохранение данных произвольного поля

Чтобы новые поля сохранялись вместе с комментарием, нужно обработать их при отправке. Для этого используем хук preprocess_comment, а затем с помощью функции add_comment_meta сохраняем данные в метаданные комментария.

Также важно проверять, что пользователь заполнил поле, если оно обязательное. Вот пример функции с проверкой и сохранением поля «Город»:

function wp_pro_save_comment_city($commentdata) {
    if (isset($_POST['city']) && !empty(trim($_POST['city']))) {
        $commentdata['comment_city'] = sanitize_text_field($_POST['city']);
    } else {
        wp_die('Ошибка: поле «Город» обязательно к заполнению.');
    }
    return $commentdata;
}
add_filter('preprocess_comment', 'wp_pro_save_comment_city');

function wp_pro_add_comment_meta($comment_id) {
    if (isset($_POST['city']) && !empty(trim($_POST['city']))) {
        add_comment_meta($comment_id, 'city', sanitize_text_field($_POST['city']));
    }
}
add_action('comment_post', 'wp_pro_add_comment_meta');

Здесь preprocess_comment позволяет прервать сохранение комментария, если поле пустое, а comment_post — сохранить метаданные после успешного добавления.

Вывод произвольных полей в шаблоне комментариев

Чтобы показать добавленное поле рядом с комментарием, нужно изменить шаблон вывода комментариев. Обычно это файл comments.php вашей темы или колбэк функции, которая выводит комментарии.

Добавим вывод поля «Город» после имени комментатора. Пример кода для вставки в колбэк:

function wp_pro_comment_display_city($comment, $args, $depth) {
    $GLOBALS['comment'] = $comment;
    ?>
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
        <div id="comment-<?php comment_ID(); ?>" class="comment-body">
            <div class="comment-meta">
                <span class="comment-author"><?php comment_author(); ?></span>
                <span class="comment-city"> - <?php echo esc_html(get_comment_meta(get_comment_ID(), 'city', true)); ?></span>
            </div>
            <div class="comment-content">
                <?php comment_text(); ?>
            </div>
        </div>
    </li>
    <?php
}

Если вы используете стандартную функцию wp_list_comments, то укажите этот колбэк в параметре callback:

wp_list_comments(array('callback' => 'wp_pro_comment_display_city'));

Так вы сможете вывести любое дополнительное поле вместе с комментарием.

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

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

  • WP Comment Fields — позволяет добавлять любые поля и управлять ими через интерфейс.
  • Comment Meta — сохраняет и выводит метаданные комментариев.

Но если вам нужно точное и лёгкое кастомное решение, лучше реализовать всё через код, как показано выше.

Советы по безопасности и удобству

При работе с пользовательскими данными важно всегда использовать функции санитизации — sanitize_text_field, esc_html и т.п., чтобы избежать XSS и других атак.

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

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

Заключение

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

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

WooCommerce: автоматическое изменение стоимости вариативных товаров
14.06.2026
WooCommerce: как исправить ошибку дублирования SKU при добавлении товаров
17.07.2026
Как настроить автоматическое удаление старого контента в WordPress
05.03.2026
WooCommerce: как исправить ошибку дублирования SKU при добавлении товаров
26.07.2026
WooCommerce: автоматическое изменение стоимости товара при выборе ежемесячной подписки
21.07.2026