comment_form() – выводит на экран код формы комментирования WordPress – используется в шаблонах.
Большинством строк/полей формы комментирования можно управлять с помощью массива параметров $args, который передается в функцию. Мы также можем использовать фильтры comment_form_default_fields чтобы изменять данные массива полей, которые включены в функцию по умолчанию: возможно добавить новое произвольное поле, либо же удалить.
Поля имеют индивидуальный фильтр comment_form_field_$name, – здесь $name – это ключ, используемый в массиве…
Возможные хуки из функции comment_form()
comment_form_comments_closed
comment_form_default_fields // позволяет изменять/добавлять поля: эл/п, сайт, имя...
the_permalink
comment_form_defaults
comment_form_before
comment_form_must_log_in_after
comment_form_top
comment_form_logged_in
comment_form_logged_in_after
comment_form_fields
comment_form_field_comment
comment_form_before_fields
comment_form_field_(name)
comment_form_after_fields
comment_form_submit_button
comment_form_submit_field
comment_form
comment_form_after
Функцию comment_form() возможно целиком перенести в шаблон…
шаблон использования:
comment_form( $args, $post_id );
или прямо так:
comment_form( $args = array(), $post_id = null );
аргументы параметра $args
$args (массив)
Аргументы, в соответствии с которыми будет создана форма комментирования.
По умолчанию: предустановленные ВП.
fields (массив)
Ассоциативный массив, состоящий из ID полей (не относится поле ввода комментария).
author (строка) Поле автора комментария HTML
примерно так выглядит массив id полей:
$args = array(
'fields' => array(
'author' => '<p class="comment-form-author"><label for="author">Имя:</label> <input id="author" name="author" type="text" value="" size="30" /></p>',
'email' => '<p class="comment-form-email"><label for="email">E-mail:</label> <input id="email" name="email" type="text" value="" size="30" /></p>',
'url' => '<p class="comment-form-url"><label for="url">Сайт:</label> <input id="url" name="url" type="text" value="" size="30" /></p>'
));
Поля будут переданы через fields, они же и будут выведены в форме.
Параметр не разрешает по отдельности менять HTML полей: либо меняете сразу все поля, либо не меняете вовсе!
email (строка) – Поле адреса электронной почты автора комментария…
url (строка) Поле URL автора комментария
cookies (строка) Поле для согласия использование файлов cookie в комментариях
comment_field (строка) Поле текста комментария
must_log_in (строка) HTML-элемент для сообщения: если для комментирования нужна регистрация/авторизация
logged_in_as (строка) HTML-элемент для сообщения /вошел в систему как [пользователь]/
comment_notes_before () HTML-элемент для сообщения, отображаемого перед полями комментариев, если пользователь не вошел в систему. По умолчанию ‘Ваш адрес электронной почты не будет опубликован
comment_notes_after (строка) HTML-элемент для сообщения, отображаемого после поля textarea (до кнопки Отправить коммеентарий).
'<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>'
action (строка) Атрибут действия элемента формы комментария. /wp-comments-post.php
id_form (строка) Атрибут id элемента формы комментария: commentform
id_submit (строка) Атрибут id элемента отправки комментария: submi
class_container (строка) Атрибут класса элемента формы комментария: comment-form
class_form (строка) Атрибут класса элемента формы комментария: comment-form
class_submit (строка) Атрибут класса элемента отправки комментария: submit
name_submit (строка) Атрибут имени элемента отправки комментария: submit
title_reply (строка) Переводимая метка кнопки: Leave a Reply
title_reply_to (строка) …метка кнопки ‘Ответить’. По умолчанию «Оставить ответ % s», где % s – автор комментария, на который осуществляется ответ
title_reply_before (строка) отображается перед заголовком формы комментария: по типу – <h3 id="reply-title" class="comment-reply-title">...
title_reply_after (строка) отображается после заголовка формы комментария: </h3>
cancel_reply_before (строка) отображается перед ссылкой для отмены ответа
cancel_reply_after (строка) …после отмены…
cancel_reply_link
(строка) метка кнопки: Cancel reply
label_submit (строка) кнопка Отправить… Post a comment
submit_button (строка) формат для кнопки: <input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />
submit_field (строка) формат разметки вокруг кнопки «Отправить» и скрытых полей комментария: <p class="form-submit">%1$s %2$s</p>
где: %1$s
разметка кнопки отправки %2$s
скрытые поля комментария
format (строка) Формат формы комментария: ‘xhtml‘. принимает ‘xhtml‘, ‘html5‘.
$post_id (строка/массив/число) – array()
ID поста, для которого нужно вывести форму комментирования.
По умолчанию: null (просматриваемый пост)
пример: как изменить некоторые поля формы комментария
$comments_args = array(
// Change the title of send button
'label_submit' => __( 'Send (Отправить)', 'textdomain' ),
// Change the title of the reply section
'title_reply' => __( 'Write a Reply or Comment', 'textdomain' ),
// Remove "Text or HTML to be displayed after the set of comment fields".
'comment_notes_after' => '',
// Redefine your own textarea (the comment body).
'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><br /><textarea id="comment" name="comment" aria-required="true"></textarea></p>',
);
comment_form( $comments_args );
использование фильтра comment_form_field_{ID поля}
Заменим имя поля по умолчанию “Сайт” на “Ваш сайт:”.
Добавим код показанный ниже в functions.php активного шаблона:
add_filter( 'comment_form_field_url', 'my_change_url_label', 10, 1);
function my_change_url_label( $field ) {
return '<p class="comment-form-url"><label for="url">Ваш сайт:</label> <input id="url" name="url" type="text" value="" size="30" /></p>';
}
еще один пример работы с фильтрами…
…попробуем удалить поле Сайт (Url).
comment_form_default_fields – удалим поле сайт:
шаблон:
add_filter('comment_form_default_fields', 'remove_website_field');
function remove_website_field($fields) {
unset($fields['url']);
return $fields;
}
рабочий пример:
add_filter( 'comment_form_default_fields', 'my_remove_url_field', 10, 1);
function my_remove_url_field( $fields ) {
unset( $fields['url'] );
return $fields;
}
Находится в ядре: /wp-includes файл comment-template.php
Кодекс.
Плагин Ats Privacy Policy добавит автоматом чекбокс принятия политики конфиденциальности к форме комментирования…
дополнительный блок Об авторе в проф. пользователя с текстовым редактором
Как работать с условными тегами WP: пример на странице пагинации – закрываем в noindex,follow
mihalica.ru !
Изучаю работу формы комментирования. Пока много непонятного.
Спасибо за работу и плагин.