Хук comment_form_default_fields
в WordPress позволяет разработчикам добавлять, изменять или удалять поля в стандартной форме комментирования. Это может быть полезно, если вы хотите настроить форму для сбора дополнительной информации или убрать ненужные поля, например, поле для ввода URL-адреса.
apply_filters( 'comment_form_default_fields', array $fields );
- $fields (массив строк) — массив, содержащий HTML-код полей формы по умолчанию. Этот массив включает в себя три стандартных поля: «author» (имя), «email» (электронная почта) и «url» (веб-сайт).
Использование
Для работы с этим хуком можно воспользоваться функцией add_filter()
и определить функцию обратного вызова, которая будет изменять массив полей формы комментирования.
add_filter( 'comment_form_default_fields', 'my_custom_comment_fields' );
function my_custom_comment_fields( $fields ) {
// Логика для изменения полей
return $fields;
}
Пример 1: Удаление поля «Сайт» из формы комментирования
Если в вашей форме комментирования поле «Сайт» не требуется, его можно удалить с помощью unset()
.
add_filter( 'comment_form_default_fields', 'remove_website_field_from_comment_form' );
function remove_website_field_from_comment_form( $fields ) {
unset( $fields['url'] );
return $fields;
}
Теперь поле «Сайт» будет убрано из формы комментирования, и посетители не смогут его увидеть.
Пример 2: Добавление поля «Телефон» в форму комментирования
Для добавления нового поля, такого как «Телефон», в форму комментирования, нужно добавить элемент в массив $fields
. Дополнительно потребуется сохранить введенные данные в метаполе комментария с помощью другого хука, comment_post
.
add_filter( 'comment_form_default_fields', 'add_phone_field_to_comment_form' );
function add_phone_field_to_comment_form( $fields ) {
$fields['phone'] = '<p class="comment-form-phone">' .
'<label for="phone">' . __( 'Phone', 'textdomain' ) . '</label>' .
'<input id="phone" name="phone" type="text" size="30"/></p>';
return $fields;
}
add_action( 'comment_post', 'save_phone_meta_data' );
function save_phone_meta_data( $comment_id ) {
if ( ! empty( $_POST['phone'] ) ) {
$phone = sanitize_text_field( $_POST['phone'] );
add_comment_meta( $comment_id, 'phone', $phone );
}
}
Теперь, при отправке формы комментирования, данные поля «Телефон» сохранятся в метаполе комментария.
Пример 3: Изменение обязательности поля «Имя»
Можно сделать поле «Имя» необязательным, удалив индикатор обязательного поля.
add_filter( 'comment_form_default_fields', 'make_author_field_optional' );
function make_author_field_optional( $fields ) {
$fields['author'] = str_replace( '<span class="required">*</span>', '', $fields['author'] );
return $fields;
}
Теперь поле «Имя» будет отображаться без звездочки, указывающей на обязательность его заполнения.
Заключение
Хук comment_form_default_fields
в WordPress предоставляет широкие возможности для настройки формы комментирования. Используя его, можно добавлять или убирать поля, а также изменять их вид и обязательность, улучшая взаимодействие пользователей с вашим сайтом.