Описание
Выводит на экран готовый код формы комментирования, который можно использовать в шаблонах.
Большинство полей формы можно изменить через параметр $args или можно использовать фильтр comment_form_default_fields чтобы изменить параметры по умолчанию, например, если нужно добавить новое поле или удалить существующее.
Также есть возможность вставлять поля (каждое в отдельности) через фильтр comment_form_field_$name, где $name ключ, который используется в массиве полей.
Использование
<?php comment_form( $args, $post_id ); ?>
Параметры по умолчанию
<?php $args = array( 'fields' => apply_filters( 'comment_form_default_fields', $fields ) ,'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>' ,'must_log_in' => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>' ,'logged_in_as' => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>' ,'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>' ,'comment_notes_after' => '<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>' ,'id_form' => 'commentform' ,'id_submit' => 'submit' ,'title_reply' => __( 'Leave a Reply' ) ,'title_reply_to' => __( 'Leave a Reply to %s' ) ,'cancel_reply_link' => __( 'Cancel reply' ) ,'label_submit' => __( 'Post Comment' ) ); comment_form( $args ); ?>
Параметры
- $args (массив)
- Аргументы, в соответствии с которыми будет создана форма комментирования.
По умолчанию: предустановленные - $post_id (строка/массив/число)
- ID поста, для которого нужно вывести форму комментирования.
По умолчанию: null (текущий пост)
Аргументы параметра $args
- fields (строка)
- Поля ввода данных: 'author', 'email', 'url'.
По умолчанию: apply_filters( 'comment_form_default_fields', $fields ) - comment_field (строка)
- Код поле ввода комментария.
По умолчанию:'<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>'
- must_log_in (строка)
- Текст, если для комментирования нужна регистрация/авторизация.
По умолчанию:'<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>'
- logged_in_as (строка)
- Текст, если пользователь авторизирован.
По умолчанию:'<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>'
- comment_notes_before (строка)
- Текст или html код, который будет показан перед полями ввода данных для не авторизированых пользователей.
По умолчанию:'<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>'
- comment_notes_after (строка)
- Текст или html код, который будет показан после полей ввода, но до кнопки отправки комментария.
По умолчанию:'<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>'
- id_form (строка)
- Значение атрибута id у тега <form>.
По умолчанию: "commentform" - id_submit (строка)
- Значение атрибута id у кнопки отправки комментария (submit).
По умолчанию: 'submit' - title_reply (строка)
- Заголовок формы комментирования (когда комментируется статья) (см. comment_form_title()). По умолчанию: "Оставить комментарий".
По умолчанию: __( 'Leave a Reply' ) - title_reply_to (строка)
- Заголовок формы комментирования (когда комментатор отвечает на другой комментарий) (см. comment_form_title()). По умолчанию: "Ответить на комментарий: Имя комментатора".
По умолчанию: __( 'Leave a Reply to %s' ) - cancel_reply_link (строка)
- Текст ссылки "Отменить ответ".
По умолчанию: __( 'Cancel reply' ) - label_submit (строка)
- Текст кнопки отправки комментария. По умолчанию: "Оставить комментарий".
По умолчанию: __( 'Post Comment' )
Аргументы параметра $fields
В аргументе fields (см. выше) была использована переменная $fields:
'fields' => apply_filters( 'comment_form_default_fields', $fields )
эта переменная определяет поля для ввода данных. В ней указаны 3 поля input: Автор, email и url:
<?php $fields = array( 'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) . '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>', 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' . '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>', ); ?>
Заметка: Чтобы использовать переменную $commenter в своей, произвольной функции вывода полей, нужно заранее определить эту переменную. Делается это так:
$commenter = wp_get_current_commenter();
comment_form()
из файла: /wp-includes/comment-template.php WP 3.3.2function comment_form( $args = array(), $post_id = null ) {
global $id;
if ( null === $post_id )
$post_id = $id;
else
$id = $post_id;
$commenter = wp_get_current_commenter();
$user = wp_get_current_user();
$user_identity = ! empty( $user->ID ) ? $user->display_name : '';
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$fields = array(
'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
'<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
'<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
);
$required_text = sprintf( ' ' . __('Required fields are marked %s'), '<span class="required">*</span>' );
$defaults = array(
'fields' => apply_filters( 'comment_form_default_fields', $fields ),
'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
'must_log_in' => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
'logged_in_as' => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
'comment_notes_after' => '<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>',
'id_form' => 'commentform',
'id_submit' => 'submit',
'title_reply' => __( 'Leave a Reply' ),
'title_reply_to' => __( 'Leave a Reply to %s' ),
'cancel_reply_link' => __( 'Cancel reply' ),
'label_submit' => __( 'Post Comment' ),
);
$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
?>
<?php if ( comments_open() ) : ?>
<?php do_action( 'comment_form_before' ); ?>
<div id="respond">
<h3 id="reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
<?php if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) : ?>
<?php echo $args['must_log_in']; ?>
<?php do_action( 'comment_form_must_log_in_after' ); ?>
<?php else : ?>
<form action="<?php echo site_url( '/wp-comments-post.php' ); ?>" method="post" id="<?php echo esc_attr( $args['id_form'] ); ?>">
<?php do_action( 'comment_form_top' ); ?>
<?php if ( is_user_logged_in() ) : ?>
<?php echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity ); ?>
<?php do_action( 'comment_form_logged_in_after', $commenter, $user_identity ); ?>
<?php else : ?>
<?php echo $args['comment_notes_before']; ?>
<?php
do_action( 'comment_form_before_fields' );
foreach ( (array) $args['fields'] as $name => $field ) {
echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
}
do_action( 'comment_form_after_fields' );
?>
<?php endif; ?>
<?php echo apply_filters( 'comment_form_field_comment', $args['comment_field'] ); ?>
<?php echo $args['comment_notes_after']; ?>
<p class="form-submit">
<input name="submit" type="submit" id="<?php echo esc_attr( $args['id_submit'] ); ?>" value="<?php echo esc_attr( $args['label_submit'] ); ?>" />
<?php comment_id_fields( $post_id ); ?>
</p>
<?php do_action( 'comment_form', $post_id ); ?>
</form>
<?php endif; ?>
</div><!-- #respond -->
<?php do_action( 'comment_form_after' ); ?>
<?php else : ?>
<?php do_action( 'comment_form_comments_closed' ); ?>
<?php endif; ?>
<?php
}Ещё из раздела
- wp_list_comments() view
- comment_author_email_link() view
- comment_author_url() view
- comment_excerpt() view
- comment_id_fields() view
- comments_link() view
- post_comments_feed_link() view
- paginate_comments_links() view
Смотрите также: Функции WordPress и Теги Шаблона.
Все что мы должны знать, чтобы оставаться здоровым в пожилом возрасте — то что жизнь в движении. Пока ты жив ты должен двигаться, пока ты двигаешься — ты жив! Движение и даже простые упражнение это профилактика здоровья, которую не дадут никакие лекарства!
Доброго времени суток!
Подскажите, пожалуйста: для того, чтобы сменить надпись на копке "Отправить комментарий" на, допустим, "Добавить отзыв" необходимо в файле wp-includes\comment-template.php в атрибуте
вместо вызова php написать "Добавить отзыв":
после редактирования:
Но, у меня после вышеизложенных манипуляций - надпись на кнопке превращается в набор вопросительных знаков в чёрных ромбиках.
В чём мною была допущена ошибка? Заранее благодарю
P.S. К сожалению, мои познания в php весьма слабы. Только начал осваивать сайтостроение.
Богдан,
измените в редакторе кодировку страницы на UTF-8. К сожалению, часто бывает, что уже выставлена кодировка UTF-8, но все равно происходят ошибки, то в этом случае необходимо поменять кодировку на какую-нибудь другую, сохранить страницу, а затем опять поменять на UTF-8.
Здравствуйте,
у Вас к форме комментариев установлен плагин jQuery Comment Preview (если не ошибаюсь)
Помогите пожалуйста добавить в него кнопку "картинка"!
Я билась с кодом три часа, не получается.
Видно девушка я "недалекая" и самоуверенная.
Может подскажете: Какой код нужно ввести в настройках самого плагина?
И нужно ли что то добавлять или менять в файлах functions.php или comments.php ?
Заранее СПАСИБО.
Я уже не помню совсем, помню только что редактировал код самого плагина (скрипт)...
Подскажите, пожалуйста как же все-таки добавить новое поле в блок комментариев. Я не пойму что и куда надо добавить. Вроде бы делаю все как описано у вас, но блок комментариев не меняется. Не могли бы Вы расписать более подробно какой блок в какой файл и куда именно в этом файле надо добавить? И как сделать так чтобы после того как пользователь ввел комментарий это дополнительное поле отобразилось в админке и как потом значение этого поля вывести в коментариях пользователя??? Спасибо!
Извините, не могу помочь, потому что сам точно не знаю как это сделать.
Мне очень понравился ваш пост и я хотела бы его разместить на своем сайте. Естественно ссылка на ваш сайт будет присутствовать. Надеюсь вы не будите против?
Нет, не буду. Ссылку только не закрывайте от индексации пожалуйста.