Документация WordPress

wp_handle_comment_submission

Функция wp_handle_comment_submission() является ключевой в обработке комментариев в WordPress. Выполняет проверку введённых данных, обработку ошибок и валидацию перед добавлением комментария в базу данных.

wp_handle_comment_submission( $comment_data, $allow_unfiltered = false );

Аргументы функции

  1. $comment_data (массив, обязательный) – массив данных, содержащий информацию о комментарии.
    • Обычно передаётся $_POST, содержащий поля comment, author, email, url и другие стандартные поля.
  2. $allow_unfiltered (логический, необязательный, false по умолчанию) – разрешает администраторам публиковать комментарии без фильтрации контента.

Как работает функция?

  1. Валидация входных данных:
    • Проверяет, переданы ли данные $_POST['comment'].
    • Осуществляет базовую защиту от спама и SQL-инъекций.
    • Проверяет обязательные поля (comment, author, email).
  2. Проверка комментариев на дублирование:
    • Использует встроенные механизмы WordPress для предотвращения повторного добавления одинаковых комментариев.
  3. Фильтрация и защита:
    • Комментарии проходят через wp_filter_comment() перед сохранением.
    • Если allow_unfiltered == false, то применяется строгая фильтрация данных.
  4. Сохранение комментария в базе данных:
    • После успешной проверки создаётся запись в wp_comments.
    • Генерируется comment_ID.
    • Вызываются соответствующие хуки (wp_insert_comment, comment_post, и др.).
  5. Обработка ошибок:
    • Если комментарий не прошёл проверку, функция вернёт объект WP_Error с соответствующим кодом ошибки.

Возвращаемое значение

  • В случае успеха возвращает массив данных добавленного комментария.
  • В случае ошибки возвращает объект WP_Error.

Пример использования

Простая обработка формы комментария:

Использование в кастомных разработках

Если вам нужно кастомизировать обработку комментариев, можно:

  1. Использовать pre_comment_on_post для предварительной обработки.
  2. Фильтровать контент через preprocess_comment.
  3. Применять comment_post для выполнения дополнительных действий после добавления комментария.

Функция wp_handle_comment_submission() – это встроенный инструмент из коробки WordPress для обработки комментариев, включающий в себя валидацию, защиту от спама и автоматическое сохранение в базе данных. Она может быть изменена с помощью хуков и фильтров, что делает её гибким инструментом для разработчиков.

comments