WooCommerce: как добавить поддержку комментариев к заказам

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

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

Диагностика проблемы: как понять, что комментарии по заказам не работают

  • В интерфейсе администратора WooCommerce на странице заказа отсутствует поле для комментариев.
  • Клиент не видит возможности добавить комментарий в личном кабинете.
  • Нет уведомлений или сохраненных заметок, связанных с заказом.

Пошаговое решение: добавляем поддержку комментариев к заказам

1. Включение поддержки комментариев для кастомного типа записи "shop_order"

Заказы в WooCommerce — это кастомный тип записи shop_order. По умолчанию для него отключены комментарии. Чтобы их включить, добавим следующий код в файл functions.php вашей темы или в собственный плагин:

function enable_order_comments_support() {
    add_post_type_support( 'shop_order', 'comments' );
}
add_action( 'init', 'enable_order_comments_support' );

2. Отображение поля комментариев в админке заказа

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

function customize_order_comment_type($comment_type, $comment) {
    if (get_post_type($comment->comment_post_ID) === 'shop_order') {
        return 'order_note';
    }
    return $comment_type;
}
add_filter('get_comment_type', 'customize_order_comment_type', 10, 2);

3. Добавление возможности клиентам оставлять комментарии к заказу

Для этого нужно вывести форму комментариев на странице просмотра заказа в личном кабинете. Добавьте следующий код в файл functions.php вашей темы:

function display_order_comment_form() {
    if ( ! is_account_page() ) return;
    
    $order_id = isset( $_GET['order_id'] ) ? intval( $_GET['order_id'] ) : 0;
    if ( ! $order_id ) return;
    
    $order = wc_get_order( $order_id );
    if ( ! $order || $order->get_user_id() !== get_current_user_id() ) return;
    
    comment_form( [
        'title_reply' => 'Оставить комментарий к заказу',
        'label_submit' => 'Отправить',
        'comment_notes_after' => '',
        'comment_field' => '<p class="comment-form-comment"><label for="comment">Комментарий</label><textarea id="comment" name="comment" cols="45" rows="8" required></textarea></p>',
        'logged_in_as' => '',
        'comment_post_ID' => $order_id
    ], $order_id );
}
add_action( 'woocommerce_order_details_after_order_table', 'display_order_comment_form' );

4. Разрешение комментариев только для заказов

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

function allow_comments_for_orders_only( $open, $post_id ) {
    $post = get_post( $post_id );
    if ( $post && $post->post_type === 'shop_order' ) {
        return true;
    }
    return $open;
}
add_filter( 'comments_open', 'allow_comments_for_orders_only', 10, 2 );

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

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

Частые ошибки и как их исправить

Комментарии не отображаются в админке

Проверьте, что вызван add_post_type_support('shop_order', 'comments') на правильном хуке init, и что код не конфликтует с другими плагинами.

Форма комментариев не выводится в личном кабинете

Убедитесь, что функция добавлена именно на хук woocommerce_order_details_after_order_table и что передается корректный ID заказа.

Комментарии доступны для других типов записей

Добавьте фильтр comments_open с проверкой типа записи, как показано выше.

Практические советы по безопасности и производительности

  • Ограничьте возможность оставлять комментарии только авторизованным пользователям, чтобы избежать спама.
  • Используйте стандартные функции WordPress для обработки комментариев, чтобы сохранить совместимость и безопасность.
  • Если на сайте много заказов, отключите уведомления по комментариям к заказам, чтобы не перегружать почтовый сервер.
  • Для улучшения интерфейса можно использовать AJAX-запросы для отправки комментариев без перезагрузки страницы.

Сравнение вариантов реализации комментариев для заказов

ВариантПлюсыМинусы
Код на functions.phpЛегко кастомизировать, нет зависимостейТребует навыков, поддержка на владельце сайта
Плагин сторонний (например, YITH WooCommerce Order Comments)Быстро, готовый функционал, поддержкаЗависимость от плагина, возможно нагружает сайт
Использование заметок заказа (order notes)Встроенный функционал WooCommerceКомментариев от клиентов нет, только администраторы могут оставлять

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить все удалённые записи из базы данных WordPress: практическое руководство
08.01.2026
Как избежать проблем с кэшированием в WordPress: практические советы и примеры
02.03.2026
Как использовать Planetary Hash в WordPress для быстрого поиска
24.03.2026
Как отключить автообновления тем и плагинов WordPress через функции
25.02.2026
Как отключить PHP error notices в WordPress: практические решения
08.02.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее