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Комментариев от клиентов нет, только администраторы могут оставлять

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

⭐⭐⭐⭐⭐
WooCommerce: как использовать хуки для изменения стоимости товара в корзине
09.06.2026
Как автоматизировать обновления плагинов в WordPress без рисков
25.12.2025
WooCommerce: как исправить проблему с возвратом денег при отключённой AJAX-обработке
07.05.2026
WooCommerce: как изменить стоимость товара в корзине по условиям
02.05.2026
Как отключить автообновления в WordPress: пошаговое руководство с примерами
25.01.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙