Comment form

WpMen - Дизайн формы комментариевПривет всем, помните как я совсем недавно писал статью о том как заставить пользователя оставить комментарий? Одним из пунктов этой статьи — было создание удобной и красивой формы комментариев WordPress. Ну, думаю не сложно догадаться, что сегодня мы поговорим про wordpress комментарии, а точнее, расскажу вам как изменить форму комментариев wordpress.

Форма комментариев wordpress действительно сильно влияет на количество оставленных комментариев и объем работы у нас с вами будет таков. Во первых, мы разместим wordpress смайлики, что бы хоть как то разбавить унылую обстановку на сайте, выделим ответы и комментарии автора сайта,и просто подкорректируем и уберем ненужные элементы в форме комментирования. И так преступим…

Смайлики для WordPress в комментариях — Kama WP Smiles.


WpMen - Смайлы в комментариях WordPressСмайлики для WordPress на самом деле уже установлены, ничего делать не нужно, вы можете попробовать самостоятельно в комментариях (Как заработать на написании комментариев?) ввести символы любому смайла и в конечном итоге получите то, что хотели 😉 Но не очень удобно вводить символы, гораздо удобнее нажать на кнопочку и получить нужный смайл. Этим мы сейчас и займемся.

Сегодня я вам расскажу о замечательном плагине Kama Wp Smiles, который не только позволяет отобразить симпатичные плагины, но так же аккуратно скрывает их в форме комментариев. Мне не нравится, когда под формой комментирования отображается вразброс список смайликов. А тут достаточно навести мышь на один из смайликов,так сразу выплывает список всех улыбочек.

Я надеюсь вы уже знаете как установить плагин и самостоятельно установите, вам в помочь предоставляю название: Kama WP Smiles.

WpMen - Смайлы в WordPress комментарияхЧто бы плагин начал работать, достаточно лишь установить его и активировать, после чего можно уже любоваться получившимся результатом. Предлагаю вам посетить статью, где я рассказываю о том, как избавится от спама в комментариях.

Как выделить комментарии автора WordPress?


WpMen - Как выделить комментарии автора WordPressПереходим к следующему пункту, который позволит нам выделить комментарии автора в CMS WordPress. Для чего это нужно? Практически каждый автор, создает свой блог (Стоит ли создавать сайт? Зачем он мне?) для того, что бы делится своими наработками, идеями и так далее. Время от времени читатели оставляют свои комментарии, задавая вопросы…

WpMen - Как удалить текст под формой комментариев WordPressИменно по этому мы и выделим комментарии автора, что бы читателям было легче найти ваши слова, так как на авторитетных блогах, читателям совершенно не интересно читать, что сказали другие, им подавай только слова автора laugh  Все что вашей душе угодно, приступим  *yes*

Для того, что бы выделить комментарии автора, достаточно в CSS стилях вашего шаблона разместить маленький код. Сейчас мы его разберем:


[php]/* Комментарии админа */

.comment-author-admin .pcom {
background: #f9f9f9;
}[/php]

Данным кодом мы заменяем стандартный цвет комментариев на свой, который регулируется годом #f9f9f9. То есть, если вы захотите поменять цвет вашего комментария, то вам необходимо будет заменить #f9f9f9 на свой, что бы подобрать текст вы можете воспользоваться стандартной таблицей цветов, которых в интернете предостаточно.

Еще одна классная фишка, если вы хотите оформить подписку на комментарии, что бы читатель получил уведомлении о вашем ответе на его комментарий, прочтите статью  *acute*

wpmen.ru

The uncustomizable parts of the function comment_form() should (idealistically) be limited purely to code that is essential for security and proper form handling by the WordPress core. However, that is not the case. To explore the issue, I used filters (could have used arguments) to completely remove all the code that is customizable. I set all available variables to empty strings—that is, all the stuff mentioned on the codex page for comment_form().

Here is the left-over, non-customisable code from comment_form():

<div id="respond" class="comment-respond">  <h3 id="reply-title" class="comment-reply-title"> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1#r.    
div><!-- #respond -->

Where does all this come from? At the bottom of the codex page for comment_form() it says…

Source Code

comment_form() is located in wp-includes/comment-template.php.

comment-template.php is linked and you can view the full code in the browser. comment_form() starts on line 1960. In fact, it’s the last function in that file. There are no arguments or filters that let you modify the residual code above. These lines of code are all moreorless “hard-coded”.

The text Click here to cancel reply. is the only text that survived my filter genocide. Strangely, comment_form() has back-up text for cancel_reply_link hard-coded into the function, in case it is passed to the function as an empty string. None of the other filterable items have hard-coded back-ups.

It is easy to see which bits of code are essential and which bits are non-essential for a HTML form. A little more difficult to judge is which bits are essential for a WordPress form. Some of the bits above were dynamically output (note that this is the first comment on a development blog with no other replies, no parent/child comments).

From the comment_form()
function in comment-template.php you can draw out the code needed to produce the dynamic parts of the WordPress form. Then, with default arguments taken from the codex page for comment_form(), you could piece together a barebones form, hard-coding the desired fields, labels and wrapping HTML. I’m doing that now and putting my custom form function in my theme’s comments.php template file, which I call using comments_template() only in single.php (for this particular theme).

The result would be a full and proper, lean and mean WordPress comment form. But… it would be a form that could not be customized anymore using comment_form() arguments or related filters unless you went ahead and included the filter code in your own comment form function. Since you’re customizing the heck out it already, that’s probably not a problem. Similarly, all the WordPress actions would also be unavailable to you or any other plugins unless you also triggered those action functions in your own comment form function. Again, probably not an issue for you at this point.

But most importantly, the resulting form might break your theme if future WordPress updates change the way the core handles forms.

If you’re aware of those risks, you can probably rebuild a hand-coded comment form just from copying code on the codex page for comment_form()
and in wp-includes/comment-template.php. I don’t have the finished code, otherwise I’d post it. But I will post when/if I succeed.

Right, that’s all from me for now. Bear in mind (all readers) that despite appearances, I am an amateur WordPress theme developer and my proficiency with PHP and WordPress is very rudimentary. Just writing up this post I learned a lot.

I’m also worried that a full and proper solution is already out there somewhere but I haven’t found it in my searches.

stackoverflow.com

Комментарии на WordPress блоге: редактирование формы добавления комментариев при помощи Comment Form Quicktags

Установив у себя плагин Comment Form Quicktags, я предлагаю вашему вниманию описание его настроек, а также то, какие функции он способен выполнять. Как помните, до недавнего времени форма комментариев WordPress по умлчанию у меня выглядела неказисто и непривлекательно для посетителей, вот так:

«>


На мой взгляд, все портит надпись под формой о возможности использования HTML-тегов, хотя о вкусах не спорят, но я все-таки решил приукрасить форму добавления комментариев, добавив вместо этой надписи возможность использования тегов путем добавления специальных кнопок.

Сначала убираем надпись под формой комментариев. Для этого надо открыть файл comment-template.php, который лежит в папке wp-include вашего хостинга и удалить в нем строчку <?php echo $args[‘comment_notes_after’]; ?>:

«>

Номер строчки может быть другой. Могу подсказать, что эта строка находится ближе к концу документа. После обновления файла надпись исчезнет. Хочу заметить, что исчезнет только запись, но возможность использования тегов останется. ВНИМАНИЕ! Существует гораздо более гибкое решение, которое есть в материале, описывающем комментарии для сайта без плагинов.

Это решение позволяет избежать редактирования файлов ядра движка Вордпресс (к которому относится comment-template.php). А в чем же плюс, спросите вы? А в том, что не придется повторять операцию редактирования каждый раз после обновления движка, поскольку изменения производятся в файлах темы. Ознакомьтесь с этой статьей обязательно!

Теперь cкачиваем Comment Form Quicktags, устанавливаем, активируем в админ-панели wordpress обычным путем. Если кто не знает, почитайте мой пост о способах установки, обновлении и удалении плагинов для WordPress, там все расписано очень подробно. После активации  Comment Form Quicktags в админ панели wordpress можно перейти к настройкам:


«>

Теперь подробно разберем все настройки формы, которые, в общем, не представляют особой трудности, кроме пары моментов. Так выглядит настройка тегов wordpress комментариев по умолчанию:

«>

Если вы хотите удалить какой-то из тегов, например, link, необходимо кликнуть по нему левой кнопкой мыши, затем нажать «Удалить»:

«>

В результате получаем исключение link из набора тегов:

«>

Теперь для удобства посетителей ресурса можно поменять надписи кнопок тегов на русский язык. Для этого последовательно кликаем по каждому из тегов опять же левой кнопкой мышки, затем вписываем названия тегов каждый раз в графу «Надпись (название)», после чего «Правка/Добавить»:


«>

В результате получаем окончательный вариант надписей на кнопках тегов:

«>

Заключительным шагом настройки wordpress комментариев ресурса нужно нажать кнопку «Обновить». Все, эта часть завершена, теги формы комментариев приобретают законченный вид. Во второй части настроек «Ограничение использования» есть возможность указать, для пользователей с каким статусом будут доступны теги. Для этого сначала необходимо отметить галочкой «Задействовать ограничения», затем выбрать пользователя, в конце обязательно «Обновить ограничения».

Настройка wordpress комментариев: установка смайлов плагином wp-Monalisa

Несомненно, наличие смайлов положительно влияет на общение, позволяя выразить свои эмоции. Но не всегда и везде они уместны, все зависит от тематики проекта, так что каждый тут решает сам, нужна эта дополнительная опция или нет. Плагин wp-Monalisa позволяет реализовать эту возможность.


Сначала необходимо скачать его с официального сайта wordpress.org, затем установить и активировать плагин. Моя тема позволила заработать плагину сразу, думаю, проблем не должно возникнуть. Настройки можно оставить по умолчанию, также можно выбрать понравившиеся смайлики. Подробно описывать не буду, там точно все понятно.

Важное замечание: Перед активацией wp-Monalisa зайдите в «Параметры»→«Написание» админ панели WordPress и обязательно снимите галочку напротив графы «Форматирование»→Преобразовывать смайлики наподобие… Это необходимо для корректного отображение смайлов в форме wordpress комментариев:

«>

Все, работа выполнена, окончательный результат можно увидеть, выйдя из админ панели wordpress:

«>

Таким образом, в результате вышеописанных действий оптимизирована форма добавления wordpress комментариев, используя плагины Comment Form Quicktags и  wp-Monalisa. Теперь форма имеет красивый вид, способный привлечь внимание читателей.

goldbusinessnet.com

Необязательные части функции comment_form() должны (идеалистически) ограничиваться исключительно кодом, который необходим для обеспечения безопасности и правильной обработки формы ядром WordPress. Однако это не так. Чтобы изучить проблему, я использовал фильтры (возможно, использовал аргументы), чтобы полностью удалить весь настраиваемый код. Я установил все доступные переменные для пустых строк, то есть все, что упоминалось на странице codex для comment_form().

Вот левый, не настраиваемый код из comment_form():

<div id="respond" class="comment-respond">  <h3 id="reply-title" class="comment-reply-title"> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1#respond" style="display:none;">Click here to cancel reply.</a></small></h3>  <form action="http://www.[yourdomain].com/wp-comments-post.php" method="post" id="" class="comment-form">  <p class="form-submit">  <input name="submit" type="submit" id="" value="" />  <input type='hidden' name='comment_post_ID' value='1' id='comment_post_ID' />  <input type='hidden' name='comment_parent' id='comment_parent' value='0' />  </p>  </form> </div><!-- #respond --> 

Откуда это все? В нижней части страницы codex для comment_form() он говорит…

Исходный код

comment_form() находится в wp-includes/comment-template.php.

comment-template.php связан, и вы можете просмотреть полный код в браузере. comment_form() начинается в строке 1960 года. Фактически, это последняя функция в этом файле. Нет аргументов или фильтров, которые позволяют вам изменить оставшийся код выше. Эти строки кода все более безошибочны «жестко закодированы».

Текст Нажмите здесь, чтобы отменить ответ. — это единственный текст, который пережил мой генофонд фильтра. Как ни странно, comment_form() имеет резервный текст для cancel_reply_link, жестко закодированный в функцию, в случае, если он передается функции как пустая строка. Ни один из других фильтруемых элементов не имеет жестких резервных копий.

Легко видеть, какие биты кода необходимы и какие биты несущественны для HTML-формы. Чуть сложнее судить о том, какие биты необходимы для формы WordPress. Некоторые из вышеперечисленных битов были динамически выводятся (обратите внимание, что это первый комментарий к блогу разработки без каких-либо других ответов, комментариев родителя/ребенка).

Из функции comment_form() в comment-template.php вы можете извлечь код, необходимый для создания динамических частей формы WordPress. Затем, используя аргументы по умолчанию, взятые со страницы codex для comment_form(), вы можете объединить форму barebones, жестко кодировать нужные поля, метки и обертывать HTML. Я делаю это сейчас и добавляю свою пользовательскую функцию формы в файлы тем comments.php, которые я вызываю с помощью comments_template() только в single.php (для этой конкретной темы).

Результатом будет полная и правильная, скудная и средняя форма комментариев WordPress. Но… это была бы форма, которая больше не могла быть настроена с использованием аргументов comment_form() или связанных фильтров, если только вы не включили код фильтра в свою собственную форму форму комментариев. Поскольку вы настраиваете его, это, вероятно, не проблема. Точно так же все действия WordPress также будут недоступны для вас или для любых других плагинов, если вы также не активировали эти действия в своей собственной форме формы комментариев. Опять же, вероятно, это не проблема для вас на данный момент.

Но самое главное, результирующая форма может сломать вашу тему, если будущие обновления WordPress изменят способ обработки форм ядра.

Если вы знаете об этих рисках, возможно, вы можете перестроить форму комментариев с ручным кодированием только с копирования кода на странице codex для comment_form() и в wp-includes/comment-template.php. У меня нет готового кода, иначе Id опубликует его. Но я буду публиковать, когда/если мне удастся.

Правильно, вот и все от меня сейчас. Имейте в виду (все читатели), что, несмотря на появление, я являюсь любительским разработчиком темы WordPress, и мое владение PHP и WordPress очень рудиментарно. Просто написав этот пост, я многому научился.

Im также беспокоился, что полное и правильное решение уже есть где-то, но я не нашел его в моих поисках.

qaru.site

Шаг 1. Разбираемся в функцией comment_form и ее аргументами

Рассмотрим функцию WordPress comment_form. Она отвечает за вывод формы комментариев, которая выводится на странице или записи. Вызов данной функции в основном можно встретить в файле comments.php в папке темы. Данный файл включается в различных местах, например, в файлах  single.php и page.php, непосредственно или через вызов функции comments_template.

Описание функции можно найти в кодексе WordPress.

Если использовать функцию comment_form для вывода формы, то она будет выводиться с использованием параметров по умолчанию и будет содержать такие поля как имя, email (оба поля являются обязательными), веб сайт и содержание комментария. В теме по умолчанию Twenty Eleven форма будет выглядеть следующим образом.

Форма комментария в теме по умолчанию

Некоторые важные аргументы функции comment_form:

  • fields –с его помощью можно управлять выводом полей в форме комментария.
  • comment_notes_before и comment_notes_after – используются для вывода информации перед и после формы.
  • title_reply – используется для изменения названия ответа, которое по умолчанию имеет значение ‘Leave a Reply’.
  • label_submit – используется для изменения текста на кнопке отправки комментария.

 

Шаг 2. Настраиваем форму комментария с помощью функции comment_form

Теперь настроим нашу форму комментария с помощью передачи аргументов в функцию comment_form.

В случае, если нам нужно настроить поля в форме комментариев, нужно передать их список в функцию comment_form. По умолчанию для функции используется следующий список полей:

Если нам нужно удалить поле, например, website, нужно просто исключить его из массива и передать массив в функцию comment_form.

Теперь форма комментария будет выглядеть следующим образом:

Изменнный список полей

В дополнение также сменим название формы на ‘Please give us your valuable comment’, а надпись на кнопке на ‘Send My Comment’.

Для выполнения задачи передаем в функцию comment_form следующие аргументы:

Теперь форма комментария будет выглядеть следующим образом:

Форма комментария

 

Шаг 3. Удаляем поля из формы с помощью крюка

Также форма комментария WordPress может быть изменена с помощью крюков и фильтров. Такая настройка может быть особенно полезна при работе с плагином, когда нужно настроить несколько элементов, но не изменять файлы темы. Фильтр для добавления иди удаления полей из формы — ‘comment_form_default_fields

Удалим поле адреса URL с помощью фильтра. Приведенный код можно использовать в плагине или в файле functions.php активной темы.

В данном случае мы добавили функцию remove_comment_fields к фильтру ‘comment_form_default_fields‘, которая удаляет поле url.

 

Шаг 4. Добавляем данные в форму комментария с помощью крюка

Мы можем добавить поля в форму с помощью фильтра ‘comment_form_default_fields‘. Добавим поле возраста автора с помощью фильтра и сохраним данное поле дополнительные данные и будем их выводить в комментарии.

Добавляем поле следующим образом:

Как только мы добавили поле в тему, то ему нужно задать стиль. Для темы по умолчанию Twenty Eleven добавим селектор #respond .comment-form-age label к другим меткам, таким как  #respond .comment-form-url label и  так далее:

Теперь наша форма комментария будет выглядеть следующим образом:

Форма с дополнительным полем

Теперь возраст хранится как дополнительная информация. Нужно использовать крюк в ‘comment_post‘:

Как только данные сохранены, их можно выводить в комментарии следующим образом:

Дополнительная информация в комментарии

 

Шаг 5. Настройка комментариев для определенных типов записей

Иногда требуется использовать поля в комментариях только для определенных типов записей. Изменим код для вывода поля возраста только для записи типа book:

 

Шаг 6. Создаем возвратную функцию для вывода комментариев

Функция wp_list_comments используется для вывода комментариев в записях. В кодексе WordPress функция описана подробно.

wp_list_comments имеет аргумент ‘callback‘ в котором можно определить функцию, которая вызывается при выводе комментария.

В теме Twenty Eleven в файле comments.php можно найти строку:

Изменим ее на:

Функция my_comments_callback будет вызываться для каждой записи.

 

Шаг 7.  Стилизация комментариев

Теперь мы немного изменим стиль комментария. Просто будем выводить содержание записи и поле возраста, которое было добавлено нами ранее. Мы также изменим цвет фона для комментариев.

Код функции ‘my_comments_callback‘:

Изменяем цвет фона следующим образом:

Комментарии будут иметь следующий вид:

Вид комментариев

 

Заключение

Комментарии играют важную роль при построении сообщества пользователей сайта. В зависимости от функционала сайта комментарии также можно изменить. WordPress обеспечивает гибкую систему настройки и изменения функционала комментариев на вашем сайте.

ruseller.com

I want to change the titles «Name», «Email», and «Website» in my comment form?. How could I do this? I thought by changing them in this field would work ( ‘Website’, ‘domainreference’ ) but it doesn’t change anything. Any help would be appreciated.

Here is my comments.php

<?php if ( have_comments() ) : ?>  <h4 id="comments"><?php comments_number('No Comments', 'One Comment', '% Comments' );?></h4>  <ol class="comment-list"> <?php wp_list_comments('callback=custom_comments');?>  </ol> <?php endif; ?>  <?php  $comments_args = array(  'id_form' => 'commentform',  'class_form' => 'comment-form',  'id_submit' => 'submit',  'class_submit' => 'submit',  'name_submit' => 'submit',  'title_reply' => __( 'Post a comment' ),  'title_reply_to' => __( 'Leave a Reply to %s' ),  'cancel_reply_link' => __( 'Cancel Reply' ),  'label_submit' => __( 'Post Comment' ),  'format' => 'xhtml',      'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Join the Conversation', 'noun' ) .  '</label><textarea id="comment" placeholder="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() ) )  ) . '</p>',   'logged_in_as' => '<p class="logged-in-as">' .  sprintf(  __( ' <a href="</a>. <a href="%3$s" title="Log out of this account"></a>' ),  admin_url( 'profile.php' ),  $user_identity,  wp_logout_url( apply_filters( 'the_permalink', get_permalink( ) ) )  ) . '</p>',   'comment_notes_before' => '<p class="comment-notes">' .  __( '' ) . ( $req ? $required_text : '' ) .  '</p>',    'author' =>  '<p class="comment-form-author"><label for="author">' . __( 'Name', 'domainreference' ) . '</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', 'domainreference' ) . '</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', 'domainreference' ) . '</label>' .  '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) .  '" size="30" /></p>',         );  comment_form($comments_args); ?> 

Also kind of unrelated to the question. The comment form shows up first and is then followed by the Name, Email, and Website forms. Is there a way to make it so that the Name, Email, and Website forms are first followed by the comment form last?

wordpress.stackexchange.com

В WordPress существуют разнообразные типы контента, такие как записи, страницы, комментарии и т.д. Все они участвуют в формировании базового фундамента WordPress. Система WordPress, представляющая собой легко трансформируемую под различные нужды платформу, позволяет вносить различные по сложности изменения в базовые типы контента. Пользователь всегда может скорректировать представление и функциональность этих типов. В данной статье мы остановимся на комментариях, расскажем, каким образом можно изменить их поведение и представление.

Функция comment_form и ее аргументы

Давайте подробно остановимся на WordPress функции comment_form. Она отвечает за отображение формы комментариев, которая чаще всего выводится на отдельных страницах и в записях WordPress. Основной вызов данной функции происходит в файле comments.php, хранящемся в папке с вашей темой. Также подключение comments.php может быть выполнено в файлах single.php, page.php и т.д. Оно реализуется как напрямую, так и опосредованно — через вызов функции comments_template.

Если мы будем применять функцию comment_form для вывода на экран формы, то форма отобразится в стандартном виде, используя параметры, заданные по умолчанию. Этими параметрами будут выступать поля Name (Имя), Email (Электронный адрес), Website (Сайт), а также поле для ввода комментария. Первые два параметра являются обязательными. В стандартной теме Twenty Eleven форма имеет следующий вид:

Comment form

Важными аргументами функции comment_form являются:

— fields. С помощью этого параметра вы можете фактически управлять, какие поля будут отображены в форме для комментариев.
— comment_notes_before и comment_notes_after. Параметры используются для вывода на экран некоторых примечаний до и после формы с комментариями.
— title_reply. Параметр позволяет менять заголовок ответа, который по умолчанию имеет вид ‘Leave a Reply’.
— label_submit. Данный параметр используется для изменения текста на кнопке, предназначенной для отправки комментария.

Изменяем форму для комментариев с помощью функции comment_form

Давайте теперь приступим к изменению нашей формы для комментариев. Мы будем передавать функции comment_form различные параметры.

В том случае, если мы хотим изменить поля для формы комментариев, нам понадобится отредактировать значение массива fields. Поля по умолчанию в функции comment_form выглядят следующим образом:

$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>', );

К примеру, если нам необходимо удалить поле website, мы должны создать массив fields без поля website и передать его в функцию comment_form, как показано в следующем примере:

$commenter = wp_get_current_commenter(); $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>', );   $comments_args = array(  'fields' => $fields );   comment_form($comments_args);

Теперь, если мы взглянем на форму комментариев, то она будет выглядеть следующим образом:

Comment form

Вдобавок к этому давайте изменим заголовок ответа на «Please give us your valuable comment» и заголовок для кнопки отправки на «Send My Comment».

Чтобы достигнуть этого, мы будем передавать аргументы в функцию comment_form.

$commenter = wp_get_current_commenter(); $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>', );   $comments_args = array(  'fields' => $fields,  'title_reply'=>'Please give us your valuable comment',  'label_submit' => 'Send My Comment' );   comment_form($comments_args);

Теперь форма комментариев будет выглядеть следующим образом:

Comment form

Удаление полей из комментариев с помощью хуков

Форма комментариев в WordPress может быть изменена при помощи хуков и фильтров. Внесение изменений посредством хуков/фильтров является довольно полезным шагом, особенно оправданным в том случае, когда вы вносите изменения через плагин и не имеете доступа к редактированию файлов темы. Фильтр, позволяющий добавлять или удалять поля ищ формы комментариев, носит название comment_form_default_fields.

Давайте удалим поле URL, используя этот фильтр. Код, который будет отвечать за удаление, вы можете поместить либо в файл плагина, если вы изменяете через плагин, либо в файл functions.php вашей темы.

Код будет выглядеть следующим образом:

function remove_comment_fields($fields) {  unset($fields['url']);  return $fields; } add_filter('comment_form_default_fields','remove_comment_fields');

Здесь мы подцепляем функцию remove_comment_fields к фильтру comment_form_default_fields и затем сбрасываем url, чтобы удалить поле website.

Добавляем дополнительные данные к комментариям с помощью хуков

Мы можем также добавить поля к форме комментариев через фильтр comment_form_default_fields. Давайте добавим поле с возрастом через этот фильтр, затем сохраним данные этого поля и отобразим их в комментариях.

Добавить новое поле можно следующим образом:

function add_comment_fields($fields) {    $fields['age'] = '<p class="comment-form-age"><label for="age">' . __( 'Age' ) . '</label>' .  '<input id="age" name="age" type="text" size="30" /></p>';  return $fields;   } add_filter('comment_form_default_fields','add_comment_fields');

Как только мы добавим новое поле, нам понадобится присвоить ему некоторые стили в зависимости от используемой темы. Так как я использую тему Twenty Eleven, то стилизация будет осуществляться при помощи объединения стилей #respond .comment-form-age label с существующими стилями для других полей:

#respond .comment-form-author label, #respond .comment-form-email label, #respond .comment-form-url label, #respond .comment-form-age label, #respond .comment-form-comment label {  background: #eee;  -webkit-box-shadow: 1px 2px 2px rgba(204,204,204,0.8);  -moz-box-shadow: 1px 2px 2px rgba(204,204,204,0.8);  box-shadow: 1px 2px 2px rgba(204,204,204,0.8);  color: #555;  display: inline-block;  font-size: 13px;  left: 4px;  min-width: 60px;  padding: 4px 10px;  position: relative;  top: 40px;  z-index: 1; }

Если взглянуть на форму, то она будет выглядеть следующим образом:

Comment form

Теперь, когда возраст указан в метаданных комментария, мы должны соединиться с comment_post и занести возраст в метаданные age комментария:

function add_comment_meta_values($comment_id) {    if(isset($_POST['age'])) {  $age = wp_filter_nohtml_kses($_POST['age']);  add_comment_meta($comment_id, 'age', $age, false);  }   } add_action ('comment_post', 'add_comment_meta_values', 1);    

Теперь, когда метаданные сохранены, их можно вывести в комментарии:

<?php echo "Comment authors age: ".get_comment_meta( $comment->comment_ID, 'age', true ); ?>

Изменение вида комментариев для определенных типов записей

Иногда полезно варьировать поля формы для комментариев в зависимости от типов записей. Давайте немного изменим предыдущий код, чтобы вывести на экран поле с возрастом только при задании определенного типа записи (пусть она называется Book).

Код, позволяющий выводить возраст только для произвольного типа записей book, будет следующим:

function add_comment_fields($fields) {    if( is_singular( 'books' ) ) {    $fields['age'] = '<p class="comment-form-age"><label for="age">' . __( 'Age' ) . '</label>' .  '<input id="age" name="age" type="text" size="30" /></p>';  }  return $fields;   } add_filter('comment_form_default_fields','add_comment_fields'); 

Таким образом, поле добавляется только в том случае, если запись имеет тип ‘Books’.

Создание callback-функции для отображения комментариев

Функция wp_list_comments используется для вывода на экран комментариев к записи. Вы можете прочитать про данную функцию в кодексе WordPress: http://codex.wordpress.org/Function_Reference/wp_list_comment.

Функция wp_list_comments обладает аргументом callback, в котором можно определить функцию, вызываемую для вывода комментария. В теме Twenty Eleven в файле comments.php вы можете увидеть следующую строку:

wp_list_comments( array( 'callback' => 'twentyeleven_comment' ) );

Мы изменим ее на

wp_list_comments( array( 'callback' => 'my_comments_callback' ) );

Таким образом, функция my_comments_callback будет вызываться для каждой записи.

Стилизация комментариев

Теперь мы стилизуем наши записи несколько иначе. Мы просто хотим вывести на экран содержимое записи и поле с возрастом комментатора. Также мы изменим цвет бэкграунда для комментариев.

Код для функции my_comments_callback будет выглядеть следующим образом:

function my_comments_callback( $comment, $args, $depth ) {  $GLOBALS['comment'] = $comment;    ?>  <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">  <article id="comment-<?php comment_ID(); ?>" class="comment">    <div class="comment-content"><?php comment_text(); ?></div>    <p><?php echo "Comment authors age: ".get_comment_meta( $comment->comment_ID, 'age', true ); ?></p>    <div class="reply">  <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply <span>&darr;</span>', 'twentyeleven' ), 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>  </div>  </article>  </li>  <?php } 

Мы также изменим цвет бэкграунда в стилях:

.commentlist > li.comment {    background: #99ccff;  border: 3px solid #ddd;  -moz-border-radius: 3px;  border-radius: 3px;  margin: 0 0 1.625em;  padding: 1.625em;  position: relative; }

Теперь, если мы взглянем на комментарии, мы увидим следующее:

Comment form

http://wp.tutsplus.com/tutorials/creative-coding/customizing-comments-in-wordpress-functionality-and-appearance/

oddstyle.ru

Фильтр comment_form_default_fields

Обратите внимание, используя параметр fields, мы не можем изменить какое-либо конкретное поля комментирования или добавить новое, не затрагивая при этом остальные поля ввода.

Фильтр применяется уже в конце, то есть после того, как вступят в силу значения элементов массива fields.

Хорошо, такой пример — допустим, нам нужно добавить поле ввода телефона. Как это сделать? Вставив этот код в functions.php:

А можно ли сделать так, чтобы поле для ввода телефона располагалось сразу под полем «E-mail»? Да, вот так:

И давайте рассмотрим ещё один пример, в котором мы удалим поле «Сайт»:

Фильтр comment_form_field_{ID поля}

Фильтр, который применяется к каждому полю ввода (кроме поля комментария) уже после задействования фильтра comment_form_default_fields.

Используя этот фильтр, очень удобно применять регулярные выражения к HTML-коду полей ввода.

Так, ну давайте в качестве примера вместо поля «Сайт» напишем «http://», для этого в functions.php добавляем следующий код:

misha.blog


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector