Функция comment_form() в WordPress
Функция comment_form() выводит форму для комментариев, которую можно использовать в шаблоне. Эта функция позволяет вам настроить поля и строки формы с помощью массива аргументов $args, который передается функции. Вы также можете использовать фильтр comment_form_default_fields, чтобы изменить стандартные поля: добавлять новые или удалять существующие. Все поля также обрабатываются по отдельным фильтрам, где вы можете вносить изменения.
Хуки функции
Вот некоторые важные хуки, которые можно использовать с функцией comment_form():
comment_form_comments_closedcomment_form_default_fieldsthe_permalinkcomment_form_defaultscomment_form_beforecomment_form_must_log_in_aftercomment_form_topcomment_form_logged_incomment_form_logged_in_aftercomment_form_fieldscomment_form_field_commentcomment_form_before_fieldscomment_form_field_(name)comment_form_after_fieldscomment_form_submit_buttoncomment_form_submit_fieldcomment_formcomment_form_after
Возвращаемое значение
Функция не возвращает ничего (null), если она была вызвана корректно.
Применение функции comment_form()
Аргументы функции
Функция принимает два параметра:
-
$args (array) - необязательный массив аргументов.
-
fields (array) - стандартные поля комментариев. Можете изменить их с помощью фильтра
comment_form_default_fields.- author (string) - HTML-код поля для имени автора комментария.
- email (string) - HTML-код поля для электронной почты автора комментария.
- url (string) - HTML-код поля для URL-адреса автора комментария.
- cookies (string) - HTML-код поля для согласия на использование cookie.
-
comment_field (string) - HTML-код поля для текста комментария.
-
must_log_in (string) - HTML-сообщение для пользователей, которые должны войти, чтобы оставить комментарий.
-
logged_in_as (string) - HTML-сообщение для пользователей, которые уже вошли в систему.
-
comment_notes_before (string) - сообщения, отображаемые перед полями комментариев.
-
comment_notes_after (string) - сообщения, отображаемые после поля для текста комментария.
-
action (string) - URL, куда будет отправлена форма комментария.
-
id_form (string) - ID формы комментариев.
-
id_submit (string) - ID кнопки отправки комментария.
-
class_container (string) - класс контейнера формы комментариев.
-
class_form (string) - класс самой формы комментариев.
-
class_submit (string) - класс кнопки отправки комментария.
-
name_submit (string) - имя кнопки отправки комментария.
-
title_reply (string) - текст для кнопки "Ответить".
-
format (string) - формат формы комментариев (может быть 'xhtml' или 'html5').
-
-
$post (int|WP_Post) - ID поста или объект WP_Post, для которого будет сгенерирована форма. По умолчанию используется текущий пост.
Примеры использования
Изменение порядка полей
Вы можете изменить порядок полей в форме, используя фильтр comment_form_fields. Вот пример, как переместить текстовое поле комментария после полей имени, электронной почты и URL:
add_filter('comment_form_fields', 'kama_reorder_comment_fields');
function kama_reorder_comment_fields( $fields ) {
// Желательный порядок полей
$myorder = ['author', 'email', 'url', 'comment'];
$new_fields = [];
foreach ($myorder as $key) {
$new_fields[$key] = $fields[$key];
unset($fields[$key]);
}
return array_merge($new_fields, $fields);
}
Задание всех стандартных настроек
$defaults = [
'fields' => [
'author' => '',
'email' => '
',
'url' => '
'
],
'comment_field' => '
',
'label_submit' => __('Отправить комментарий'),
];
comment_form($defaults);
Изменение некоторых полей формы комментариев
$comments_args = [
'label_submit' => 'Отправить',
'title_reply' => 'Напишите ответ или комментарий',
'comment_notes_after' => '',
'comment_field' => '
',
];
comment_form($comments_args);
Ввод и вывод кода функции comment_form()
Функция comment_form() определена в файле wp-includes/comment-template.php. Она обрабатывает все вышеуказанные параметры и выводит HTML-код формы для комментариев. Этот код включает в себя обработку поля для ввода имени, адреса электронной почты, URL и текстового сообщения.
Функция comment_form() предоставляет возможность встроить базовую функциональность комментариев в ваш сайт на WordPress, что позволяет пользователям взаимодействовать с вашим контентом.