Настройка формы комментариев в WordPress 3.0+

Как я писала в посте о настройке формы комментариев в теме Twenty Eleven, начиная с WordPress 3.0, вывод формы комментирования осуществляется с помощью функции comment_form(). Сейчас я расскажу, как настроить форму комментариев в WordPress версии 3.0 и выше.

Функция comment_form()

У функции comment_form() есть два параметра, которые можно изменять по своему желанию:

$args – содержит настройки полей формы,
$post_id – используется для генерации формы; если значение пустое, будет использован ID текущего поста.

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

По-умолчанию, $args имеет такие значения:

То есть, если оставить $args пустым или пропустить его, то будут загружены эти строки.

Настроить $args можно также и через фильтр comment_form_default_fields. Например, если вам нужно скрыть поле Сайт в форме комментирования в WordPress 3.0+, то в файл functions.php необходимо добавить следующий код:

Использование comment_form_default_fields

Давайте настроим вывод основных полей формы с помощью comment_form_default_fields: автор, email, сайт. Эти поля расположены в массиве:

Сейчас можно добавлять или изменять теги полей.

Если надо добавить новые поля в форму комментариев, то используется такой код:

Так мы создадим новое поле new, и заключим его в теги p.

По-умолчанию, поля, создаваемые comment_form() выглядят так:

Однако использование comment_form_default_fields не единственный способ изменить вид формы. Например, если нужно только внести изменения в какое-то одно поле, то можно сделать следующим образом:

Так мы добавим к полю ввода комментария лейбл, и установим размеры поля textarea 45 на 8 строк.

После того, как внесены необходимые изменения, можно приступать к оформлению при помощи CSS.




95 комментариев к “Настройка формы комментариев в WordPress 3.0+”

  1. Ира

    Подскажите – а от каптчи вы отказались в этом случае в комменте?

    Ответить
    • oriolo

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

      Я считаю, что если посетитель хочет оставить комментарий, то не надо ему мешать всякими капчами – у меня, например, после вида капчи и неправильного ее ввода желание комментировать пропадает.

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

      Ответить
  2. Ольга

    Здравствуйте, спасибо за ваш блог!)))
    У меня такой вопрос: как сделать комментарии ответов в раздельных блоках? как у вас на сайте, где нужно что исправить?) Заранее большое спасибо!)))
    Сайт: olgablik.com

    Ответить
  3. Наталия

    Подскажите, пожалуйста, как исправить в комментариях ситуацию, когда они “наползают” друг на друга…. Не могу найти ответ самостоятельно:( СПАСИБО.

    Ответить
  4. Наталия

    Ирина, огромное спасибо!!!! Вы действительно профи! Ваша рекомендация помогла исправить неполадки с комментариями, которые я не могла исправить очень долгое время. Я даже писала разработчику шаблона, но он не ответил…
    СПАСИБО!!! Удачи и успеха во всех начинаниях!!!

    Ответить
  5. Viktoria

    А что делать, если форма комментариев упорно не хочет показываться? Старые комментарии выводятся, а самой формы нет. Где что править нужно?

    Ответить
    • oriolo

      Попробуйте найти в файле single.php такой код: < ?php comment_form($args, $post_id); ?>, и если его нет, то добавить после вывода записи.

      Ответить
  6. Алексей

    Из всех найденных мною статей по настройке комментариев ваша самая информативная.
    Подскажите, пожалуйста, как можно сделать поле для ввода телефонного номера, Скайпа?

    Ответить
    • oriolo

      Алексей, с помощью примерно такого кода:

      Только надо написать вместо new название вашего нового поля.

      Ответить
  7. Николай

    Вопрос такой – как к полю E-mail прикрутить JavaScript, что бы можно было проверить адрес, или его откорректировать?

    Ответить
  8. Светлана

    Ирина, огромное спасибо за статью! Все понятно и лаконично. Удачи во всем!

    Ответить
  9. Антон

    Здравствуйте! У меня в коце каждой страницы висит “Ваш отзыв”, хотя ниже присутствует сама форма коментариев, можно ли как-нибудь это убрать? Я все файлы поиском облазил, нигде эта фраза не встречается, но ведь где-то же она есть(

    Ответить
    • oriolo

      Антон,
      1) дайте ссылку на сайт,
      2) скажите как называется тема.

      Ответить
      • Антон

        1) Сайт у меня пока на денвере
        2) Тема называется Steampunk

        Ответить
      • Антон

        Всё, нашел! В папке с темой есть файл loop.php, он похоже заменяет функцию index.php, так как index.php почти пустой. В любом случае спасибо за интересные статьи и потраченое время!

        Ответить
  10. Розали

    Здравствуйте. Скажите пожалуйста это настройка только для оформления формы комментария? У меня стоить старая настройка комментариев,хочу изменить. Как сделать так чтоб каждый новый коммент выглядел так же как у вас?

    Ответить
    • Ирина

      Надо посмотреть при помощи фаербага или F12 в google chrom, какой стиль за комментарии отвечает, и настраивать этот стиль.

      Ответить
  11. Alex

    Добрый день! Я – начинающий, поэтому много проблем возникает. И вот одна из них с комментариями. Выскакивает сразу 3 формы друг за другом после поста. Уже полностью удалил comments.php и вставил по новой из папки темы (я ее сохранил), но вот никак… Не подскажете – в чем проблема может быть?

    Ответить
  12. Сергей

    Спасибо вашему посту, выпилил у себя в блоге поле для сайта комментатора.

    Ответить
  13. Dima

    Bolshoje spasibo!

    Ответить
  14. Людмила

    Ирина, здравствуйте!
    Подскажите, пожалуйста:
    У меня тема weaver1 на страницах поле комментарии выводится нормально с полями для заполнения, а в записи комментарии без полей, есть только ссылка Leave a comment, и она не работает, никуда не переходит.
    Как это исправить?

    Ответить
    • Ирина

      Людмила, у Вас что-то с постоянными ссылками. Проблема в файле htaccess, попробуйте заменить его на стандартный?

      Ответить
      • Людмила

        Доброго дня, Ирина!
        Не знаю, как это произошло, но после того как Вам вопрос написала – поле комментариев появилось у записей, само собой как-то. На страницах не могу убрать их по-прежнему. Хотя везде в инете пишут, и сам wordpress тоже, что типа страницы тем и отличаются от записей, что на них нет комментариев.

        Ответить
        • Ирина

          Ничего не могло появиться само собой. Значит, у вас где-то в теме, скорее всего в page.php есть comment_form.
          А то, что у вас на главной странице на записи нельзя переходить, это постоянные ссылки.

          Ответить
  15. RE:активист

    Скажите, а как так сделать, чтобы комментарии были ниже формы комментариев?:)

    Ответить
    • Ирина

      Код вывода формы комментариев переместить до вывода комментариев. Какие это файлы, зависит от вашей темы.

      Ответить
  16. Андрей

    Подскажите запутавшемуся, как вообще убрать форму комментариев? Из темы поудалял все что начинается на “commen”, но на главной эта сволочь все равно вылазит. Сломал голову уже. В коде главной откуда-то берется класс где эта окаянная форма и выползает, но его в теме я тоже удалил, файл comments.php тоже снес к бесам ибо он мне не нужен вовсе. Присоветуйте методу как изгнать заразу?

    Ответить
  17. Андрей

    Я понимаю, что не может вроде быть такого, но оно есть! Если посмотреть код главной то кусок с комментами вот он:

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

    Нажмите, чтобы отменить ответ.

    Имя

    E-mail (не публикуется)

    Сайт

    Но ни где в шаблоне ни чего подобного нету/

    Ответить
  18. Sasha

    Здрасте ваши манипуляции не подходят для такого типа
    http://bagdan.p.ht/
    что я только не преепрбовал
    z:\home\localhost\www\testblog\wp-includes\comment-template.php
    редактировал и ничего….
    как можно изменить просто названия полей … имя емаил сайт

    Ответить
    • Ирина

      А зачем Вы этот файл меняли, он системный, его лучше не трогать, все изменения делаются в functions.PHP.
      И извините за глупый вопрос, Вы файл после изменения на сервер закачивали?

      Ответить
  19. blr_spy

    подскажите
    вот есть виджет “Свежие записи” в каком файле находятся его настройки?? поменять название допустим расстояниие между записями которые он показывает
    смотрел sidebar.php но там что-то нет ничего…

    заранее благодарен

    Ответить
    • Ирина

      Все настройки виджета можно сделать через CSS. Если у Вас браузер Хром, нажмите правой кнопкой мыши по виджету, нажмите “просмотреть код элемента”, в правой колонке будут стили. Смотрите, какие стили отвечают за вывод этого виджета в левой колонке (по-моему, recent-post класс должен быть), а потом прописываете в файле стилей что-то типа .recent-post li {padding: 10px;}

      Ответить
  20. Сергей

    Добрый день.
    Пытаюсь в схеме Karma добавить возможность комментирования к страницам.
    Взяв из single.php строку

    я добавляю её в темплейт в раздел:

    Увы, добавление строки ничего не меняет. Куда еще можно посмотреть?
    Спасибо.

    Ответить
    • Ирина

      Сергей, необходимо добавить функцию

      в том месте, где хотите вывести форму добавления комментария, и функицю

      там, где надо выводить сами комментарии.

      Ответить
  21. Xstroy

    Вот и у вас вижу под формой для комментирования список разрешённых тегов, а вот как избавиться от них в 12-й теме не пойму.
    Подскажите…

    Ответить
  22. Yehor

    Спасибо, такой вопрос — как изменить слова на самой кнопке? У вас например написано «Опубликовать!», а как изменить на другую фразу?

    Ответить
  23. RomanZmeu

    Спасибо. Пригодилось для моего блога

    Ответить
  24. Наиль

    А у кого – нибудь есть готовая форма комментариев. Чьоб просто вставить и все! У меня сайт на вордпрессе. По могите кто чем сможет.
    Заранее спасибо!!!

    Ответить
  25. Марина

    Подскажите пожалуйста в чем проблема. Установила тему My Meny, комментарии стандартные, ничего не меняла. Но при попытке оставить этот самый комментарий выскакивает следующее: ОШИБКА: пожалуйста, заполните необходимые поля (имя, e-mail). Поля заполнены. В чем же проблема?

    Ответить
    • ююбю

      ничего не меняла. Но при попытке оставить этот самый комментарий выскакивает следующее: ОШИБКА: пожалуйста, заполните необходимые поля (имя,

      Ответить
  26. Nikoletta

    У меня почему-то видно только три комментария от одного пользователя. На два из них ответить можно, а на последний нет. Можно ли что-то изменить?

    Ответить
    • Ирина

      Надо смотреть сайт и код, который у Вас в шаблоне. Без этого очень трудно что-то сказать.

      Ответить
  27. Виорел

    Ирина, здравствуйте!
    Вижу Вы тут всех “лечите”,может и для меня рецепт найдется.
    Подскажите пожалуйста: когда читатель оставляет комментарий, мне на почту приходит письмо (типа одобрить или нет) но когда захожу в панель управления
    там пишут: Извините, нет комментария с таким ID .В чем проблема?

    Ответить
    • Ирина

      Хм. Похоже, что комментарий мог попасть в спам. Или был удален. Но я не разу с таким не сталкивалась.

      Ответить
  28. Виорел

    Да,супер.И это мне понравилось!

    !!!! Благодарю за первый комментарий, который вы оставили в моем блоге!

    Я очень рада, вы проявили интерес к моему посту.!!!!!

    Как такое можно поставить у себя на сайте?

    Ответить
  29. Виорел

    Спасибо за ответ!!! Проблема еще не решена полностью….По моему это из-за плагина Akismet.Сейчас выдает вот это: Ошибка:Защита от спама. Вы допустили ошибку. Пожалуйста, вернитесь и попробуйте снова.Может стоит его отключить???

    Ответить
  30. Виорел

    Отключил Akismet……не помогло.Может я удалил что то, что не надо было когда чистил спам комментарии?

    Ответить
  31. Femil

    Может и мне подскажете? Есть плагин рейтинга wp postratings. Хочу, чтоб голосовать мог комментирующий, т.е. нужно добавить звезды в форму комментирования. Сделала так:

    function my_fields($fields) {
    if(function_exists('the_ratings'))
    {
    $fields['new'] = ''.the_ratings().'';
    }
    return $fields;
    }
    add_filter('comment_form_default_fields','my_fields');

    Но результата не получила (т.е. функция непосредственно голосования не срабатывает), в коде вижу, что поле new как-бы добавляется, но пустым (((
    Понятно, что можно переписать файл системы, но хотелось бы оставить возможность обновления ВП…

    Заранее спасибо за ответ.

    Ответить
    • Ирина

      А у вас функция the_ratings() точно возвращает значение рейтинга, а не поле, например?

      Ответить
  32. Георгий

    Здрасьте, не расскажете поподробнее куда какой код нужно вставить? И еще. там где $args на 14 строке тег p подозрительно светится..

    Ответить
    • Ирина

      В functions.php надо вставлять. Про 14 строку: код обновила в соответствии с новыми изменениями в Кодексе, спасибо.

      Ответить
  33. Серый

    Помогите удалить в комментариях вывод недели (первой буквой недели)
    Желательно по подробней где и как, а то тока начинаю юзать!!! жду ответа

    Ответить
    • Ирина

      Не знаю, какая у вас тема на блоге используется, поэтому на абстрактном примере. В файле comments.php или functions.php или другом файле, который у Вас отвечает за вывод текста комментариев, нужно найти get_comment_date(). Она может выглядеть примерно так:

      Подробнее про эту функцию по-русски: http://wp-kama.ru/function/get_comment_date
      Так вот, то что передает первый параметр – это формат даты. Если там вместо “l, F jS, Y”, написать “d.m.Y”, то будет выводиться дата вида 10.03.2014.

      Ответить
  34. Александр

    Здравствуйте, oriolo! Интересует вопрос по форме комментирования для отзывов о компании. Как можно поставить форму для комментирования в верху всех комментариев, что бы пользователю не приходилось прокручивать страницу в самый низ? Спасибо за ответ.

    Ответить
    • Ирина

      Александр, все зависит от вашего шаблона. Обычно нужно в файле comments.php поменять местами функции, которые выводят форму комментариев и сами комментарии.

      Ответить
  35. Катя

    Можете мне помочь, Ирина! Ошибка стандартная, но мне не хвататет опыта, чтобы ее самостоятельно исправить. При попытке отправить комментарий появляется пустая белая страница. Мой сайт на вордпрес e-moiseeva.ru
    Спасибо!

    Ответить
  36. Hendalf

    скажите пожалуйста, как вы избавились от ?replytocom= в url, сохранив древовидные комментарии?

    Ответить
    • Ирина

      Хороший вопрос 🙂 Вообще, я специально это не делала. Предполагаю, что это либо фреймворк Roots, на базе которого я разрабатывала тему, либо плагин SEO by Yoast.

      Ответить
  37. Анатолий

    Ирина, здравствуйте! подскажите пожалуйста где найти и изменить текст навигации в комментариях? Ведь по умолчанию: “Предыдущие комментарии”, “Следующие комментарии”. Вот ссылка, ознакомьтесь: http://440388.webconfe.web.hosting-test.net/otzyivyi

    Ответить
  38. Елена

    Здравствуйте, Ирина! Не могли бы вы подсказать как исправить то, что изначально в шаблоне форма комментариев скрыта и чтобы оставить комментарий ее нужно разворачивать. А хочется сделать, чтобы она была на виду. И галочку об уведомлениях о новых комментариях поставить автоматически, как у Вас на сайте. Спасибо если ответите!

    Ответить
  39. Наталья Грамоткина

    Подскажите, что нужно сделать чтобы выводились комментарии на СТРАНИЦАХ. В записях выводятся нормально, а на страницах нет. В “настройки”- “обсуждения”- “Разрешить оставлять комментарии на новые статьи” галочка стоит. В админке “страницы” – “настройки экрана” все галочки стоят (“комментарии” тоже). Но самого окна комментариев на странице нет. При чем в старой теме у меня тоже так было, поставила новую и в ней так же. НО! Такая как у меня “новая” тема стоит еще на одном стороннем сайте и там комментарии на страницах есть. Значит, я так думаю, нужно править код? И еще когда поставила новую тему, комментарии в ЗАПИСЯХ идут не по очереди. Когда пишу ответ на вопрос,то он ставится не под соответствующим комментарием, а аж после всех в самом конце. Еще само окно комментариев очень узкое. Как его расширить? Подскажите, пожалуйста, как это все можно исправить?

    Ответить
    • Ирина

      Наталья, да, скорее всего нужно править код. Проверьте, пожалуйста, есть ли вывод комментариев в шаблоне page.php. Если нет, то туда нужно добавить код для вывода, из файла single.php. Подробнее, к сожалению, не смогу сказать, так как не знаю, что у Вас за тема и какой у нее код. Чтобы комментарии отображались друг под другом, нужно включить в настройках обсуждения древовидные комментарии. Расширить поле можно через CSS.

      Ответить
  40. sar

    Все отлично работает, если прямые руки. Спасибт

    Ответить
  41. Андрей

    Здравствуйте, а как можно переименовать поля Имя и Сайт?

    Ответить
  42. Алексей

    подскажите как можо поле для комментария поднять выше полей ввода мейла и имени?

    Ответить
  43. Евгений

    Здравствуйте. Подскажите, пожалуйста, а как сделать поле “сайт” обязательным для заполнения?

    Ответить
  44. Ника

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

    Ответить
  45. Саша

    Rearrange Comment Form — плагин, возвращающий форму комментирования, которая была до обновления WordPress 4.4

    Ответить
  46. Дмитрий

    Хорошая статья) Но больше я люблю пользоваться коментами вк, т.к. их сложнее накрутить, и такая форма вызывает больше доверия у читателей. Хотя я могу ошибаться))

    Ответить
    • Ирина

      Может я чего-то не понимаю, но зачем накручивать комментарии? О себе могу сказать, что я никогда не комментирую на тех сайтах, где установлены комментарии ВК или Фейсбука, из соображений приватности.

      Ответить
  47. МАКСИМ

    Привет! Пытаюсь разобраться как включить отображение комментариев в моем блоге, использую тему Memoir, прошу помочь разобраться, за ранее благодарен!
    В настройках Обсуждение включено Разрешить оставлять комментарии на новые статьи
    В самих Записях – Разрешить комментарии то же включены
    файл page.php http://pastebin.com/y9iBr3uV

    файл single.php http://pastebin.com/anNbcyP4

    файл index.php http://pastebin.com/qTPRZZk6

    Ответить
  48. Максим

    Спасибо за статью! Ирина, подскажите, как можно сделать так, чтобы поле ввода комментария располагалось ниже полей для ввода имени и почты? У меня они почему-то поменялись местами.

    Ответить
  49. Евгений

    Спасибо большое, очень познавательно!!!)))

    Ответить
  50. Vova

    При добавлении нового коммента он отправляеться на почту админу.
    В этом письме в поле From указан емаил не автора коммента, а то же админа.
    А где можно в Поле From добавить именно мыло автора коммента ?

    Ответить

Оставить комментарий