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: практические решения и примеры кода
06.12.2025
WooCommerce: как автоматически изменять стоимость товара при изменении количества в корзине
08.07.2026
Как автоматизировать удаление старых записей в WordPress по дате
31.03.2026
Как добавить поддержку формата WebP в WordPress без плагинов
14.03.2026
Как добавить автозамену текста в WordPress простым кодом
04.04.2026
×
Прокачай свой WordPress!

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

Воспользоваться сейчас ⋙