Как настроить форму комментирования правильно — под себя…. Разрешаем пользователям оставлять анонимные комментарии в WordPress Псевдоним: Идеальное решение

Здравствуйте!

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

Начну с того, что в каждом шаблоне (теме) WordPress есть файл comments.php , Полный путь к нему от корневого каталога: /wp-content/themes/папка_шаблона/comments.php

Именно comments.php отвечает в целом за блок комментариев в конкретной теме WordPress.

Что чаще всего содержится в comments.php:

– проверка защиты комментариев паролем

– проверка разрешены ли комментарии к статье

– проверка наличия комментариев и вывод соответствующего текста (“Комментариев нет …” или “Оставлено n комментариев”)

– вызов функции вывода комментариев – wp_list_comments()

– вывод навигации (пейджинации) при многостраничном размещении комментариев

– вывод формы для оставления комментариев к статье

Здесь понятно, что вы можете задавать свои классы или изменять свойства в style.css для уже существующих классов. Таким образом, вы можете изменить внешний вид формы для оставления комментариев и текстов до списка комментариев и после этого списка или формы. Но стили вывода непосредственно самих комментариев в comments.php изменить нельзя.

Когда я перечислял содержимое файла comments.php , то специально отметил подчеркиванием, что в comments.php происходит всего лишь вызов функции вывода комментариев wp_list_comments() , но не сам вывод. Т.е. в comments.php вы не найдете (по крайней мере, в последних версиях WordPress и при правильном подходе к разработке шаблонов): вывод имени автора сообщения и ссылки на его сайт, вывод аватарки автора, вывод даты и времени комментария, самого комментария и ссылки “ответить”.

Как же изменить стили в списке комментариев?

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

Вызов функции wp_list_comments() возможен без колбэка (callback – функция обратного вызова) и с колбэком.

1. Вызов wp_list_comments без колбэка:

Т.е. в параметрах функции (то что в скобочках, после названия) нигде не фигурирует параметр с названием ‘callback’.

Если в comment.php вашего шаблона такая ситуация, то это означает, что в данной теме нет собственной (пользовательской) функции для вывода комментариев и для этого используется стандартный шаблон (шаблон из ядра WordPress). Расположен он файле . А поскольку , то в данном случае изменить стили отображения комментариев не получится, пока мы не прейдем ко второму варианту.

2. Вызов wp_list_comments с колбэком:

callback=custom_comment указывает, что для вывода комментариев у нас есть пользовательская функция custom_comment , код которой, грубо говоря, мы и передаем в качестве параметра для исполнения в стандартную функцию wp_list_comments . Но нас интересует больше не техническая сторона этого вопроса, а именно наличие в шаблоне собственной функции для вывода комментариев. Код этой функции расположен в .

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

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

get_comment_author_link() – получает html ссылку на сайт автора текущего комментария;

get_comment_date() – получает дату комментария;

get_comment_time() – получает время комментария;

comment_text() – выводит текст комментария;

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

Например, в коде пользовательской функции фрагмент вывода аватарки:

< div class = "comment-author" >

< / div >

Теперь осталось в style.css задать желаемые свойства классу comment-author . Подробней конкретные примеры изменения стилей рассмотрю в одной из следующих статей.

Теперь у вас может возникнуть вопрос: “Что делать, если в моем шаблоне нет пользовательской функции для вывода комментариев? ”

Ответ: нужно создать её.

Самый простой вариант – скопировать код стандартной функции WordPress comment() .

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

1. Откройтефайл /wp-includes/comment-template.php и найдите в нем функцию comment() .

Вот начало её описания

/** * @since 3.6 * @access protected * * @param object $comment Comment to display. * @param int $depth Depth of comment. * @param array $args Optional args. */ protected function comment($comment, $depth, $args) {

* @since 3.6

* @access protected

* @param object $comment Comment to display.

* @param int $depth Depth of comment.

* @param array $args Optional args.

protected function comment ($ comment , $ depth , $ args ) {

2. Скопируйте все тело функции comment() .

Скопировать нужно фрагмент кода от начала описания, показанного в пункте 1 до закрывающейся фигурной скобки } и следующего за ней подобного описания другой функции

Всем привет! Сегодня я хочу Вам рассказать о том, как заставлять читателей Вашего блога оставлять комментарии на Вашем же блоге. Конечно я не хочу сказать, что мой блог буквально “кишит” комментариями, но все же, все равно что-то есть.

Немного о себе.

Создав первый блог, второй (этот – ) я страдал нехваткой комментариев на них. Давай рассмотрим этот блог. По-моему, писал неплохо, полезно, но комментариев все нет и нет. Помню, после того как дописал , думал, что будут всякие благодарности и т.п., мол создано немало новых блогов, но комментариев все равно не было…

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

Но все же, как заставить читателя оставить комментарий?

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

Поэтому, я считал, что лучше порою промолчать, “забить” на свою проблему, хотя ответа на свой вопрос в Гугле, в Яндексе не нашел. Я думал, что никто не будет откликаться на мои проблемы, отвечать на мои вопросы.

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

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

Уважаемы читатели, если я даже не ответил на Ваши благодарности, знайте, я их без внимания не оставил, честно, мне действительно очень приятно…

Как сделать так, чтобы читатель оставил комментарий на блоге
  • Нужно понять, какая у Вас читательская аудитория и вникнуть в доверие к ней. Для этого, можно создать страницу “Об авторе”, разместить свою фотографию, дать ссылки на свои контакты в icq, skype, twitter, Вконтакте, facebook и др., чтобы Ваши читатели действительно знали, что Вы – живой человек, такой же как и сам читатель.
  • Можно, иногда, опубликовывать посты личного характера, например, как Вы интересно провели лето и т.п. Такие статьи “сближают” автора блога и читателей. Но не стоит преувеличивать. Не нужно отходить от тематики своего блога слишком часто, тем самым Вы оттолкнете целевую аудиторию.
  • В конце статьи просить читателей оставить комментарий. Это малоэффективный способ. Более эффективно в конце поста задать вопрос.
  • В самой статье не открывать полностью весь смысл. Пусть останется такое чувство, что Вы, якобы, пропустили естественные вещи, читатель захочет сам дополнить Вашу статью.
  • Собирать некие дискуссии. Например, немало комментариев набирают посты следующего характера: “Apple VS Nokia”, “WordPress или Joomla” и т.п. Любители одной стороны будут доказывать свое, а противоположная сторона – обратное.
  • Сделать капчу (защиту от спама для оставления комментариев) как можно проще. Конечно в идеале – полное отсуствие капчи, но спамерские боты “выносят мозг и блог” :).
    К примеру, я НИКОГДА не оставляю комментарии там, где в виде капчи используется код в картинки, если он еще и длинный, то это все, это просто конец света. Мне просто лень, не хватает времени переписывать этот набор букв.
    Поэтому для защиты от спама ставьте плагины на подобие тех, которые требуют поставить лишь галочку, что Вы не робот, ну или решить несложную математическую задачу. Кстати, о последнем плагине я подробно рассказывал в .
  • Перед комментированием вместо стандартного текста “К сожалению, пока нет комментариев” разместите, что-нибудь “заставляющее” оставить комментарии, наподобие “Оставь комментарий, нам важно ТВОЕ мнение” (первое, что пришло в голову 🙂). Этот текст можно изменить в файле comments.php.
  • Оставляйте комментарии на других блогах. В первое время это очень сильно помогает. Но потом на это не хватает всего тоже времени… Оставлять комментарий нужно осмысленно и в тему. Сразу вспомнил свой комментарий оставленный на seogramota.ru, благодаря которому я получил много новых читателей, подписчиков и бесплатную ссылку с блога с 110 Тиц и PR 2 (что такое тиц и pr и как их поднять я скоро расскажу в одном из своих уроках).
    Оставляйте комментарии со своим уникальным аватаром (это необязательно должна быть Ваша фотография). Чтобы была аватарка при оставлении комментария, Вам нужно “привязать” Ваш email (который указывается при комментировании) к картинке. Для этого просто нужно зарегистрироваться на gravatar.com , а дальше, что делать, Вы все поймете сами, я уверен.
  • Уберите возможность оставлять комментарии только зарегистрированным пользователям! Только единицы будут регистрироваться только для того, чтобы оставить комментарий.
    Для этого зайдите в админку WordPress –> Настройки –> Обсуждение и уберите галочку напротив “Пользователи должны быть зарегистрированы и авторизованы для комментирования”:

  • Можно устраивать всякие конкурсы, которые “заставят” оставлять комментарии Вашим читателям. В свое время конкурс, который я провел (напомню, он назывался “ ”), сильно мне помог. Появился некий “костяк”, “скелет” комментариев. То есть, читатели видели, что другие пользователи оставляют комментарии, значит все нормально, можно оставить и им свою лепту. Преодолели некий страх.
    Конечно, всякие конкурсы не каждый хочет устраивать: кому-то жалко денег на призы, для кого-то конкурсы кажутся бредовой идеей, но Вы возьмите себе на заметку, они очень даже эффективные.
    В свою очередь я прошу прокомментировать всего лишь одну статью (я буду Вам благодарен), вот
  • Недавно один из наших читателей спросил, возможно ли разрешить анонимное комментирование в WordPress. По-умолчанию, пользователи не могут оставлять комментарии в WordPress без указания имени и адреса электронной почты в форме комментариев. В этой статье мы покажем вам как разрешить пользователям оставлять комментарии анонимно в WordPress. Также мы покажем вам как скрыть поля имени и email из формы комментирования.

    Псевдоним: Идеальное решение

    Самый лучший способ разрешить анонимные комментарии в WordPress — поощрять пользователей использовать псевдонимы или никнеймы вместо реального имени.

    Это позволит вам построить сообщество, и в то же время вы разрешите пользователям оставаться анонимными. Комментаторам все равно придется оставлять свой email адрес, однако большинство людей, желающих оставаться неизвестными, будут пользоваться дополнительным ящиками.

    Вы можете прописать такие варианты в политике комментариев и указать сквозную ссылку на них над формой комментариев.

    В то время как это решение является идеальным, и единственным, которое мы рекомендуем, существуют и другие решения для анонимности авторов. Но помните, чем больше анонимности на сайте, тем больше на нем спама.

    Делаем поля Имя и Email необязательными

    Следующий слой анонимности, который вы можете добавить, это сделать поля Имя и Email совершенно необязательными. Если пользователь отправляет только комментарий, без имени и почты, он пройдет. Давайте посмотрим на то, как сделать поля Имя и Email необязательными.

    Первым делом вам необходимо перейти в раздел Параметры » Обсуждение административной панели сайта и снять галочку с «Автор комментария должен указать имя и e-mail». Теперь необходимо сохранить изменения и ваш сайт будет принимать комментарии без имени и почты.

    Простое убирание этого чекбокса не сообщит пользователям о том, что теперь они могут оставлять комментарии без указания имени или почты. Уведомить их об этом можно, пометив соответствующие поля не обязательными. Также мы советуем убрать поле Сайт, чтобы уменьшить количество спама. Для этого необходимо модифицировать вашу форму комментирования. Просто скопируйте и вставьте следующий код в файл functions.php вашей темы или в :

    Function wpb_alter_comment_form_fields($fields) { // Модифицируем поле Имя и отображаем его не обязательным $fields["author"] = "

    " . "" . __("Имя (Не обязательно)") . " " . ($req ? "*" : "") . "

    "; // Модифицируем поле Email и отображаем его не обязательным $fields["email"] = ""; // Эта строка убирает поле Сайт из формы комментирования. $fields["url"] = ""; return $fields; } add_filter("comment_form_default_fields", "wpb_alter_comment_form_fields");

    Этот код просто добавляет (Не обязательно) к полям Имя и Email в вашей форме комментариев. Также он убирает поле Сайт из нее. Если же вы хотите оставить «Сайт», то просто удалите соответствующие строки кода. Вот так будет выглядеть ваша форма комментирования:

    Как полностью убрать поля Имя и Email из формы комментариев

    Для тех пользователей, которые хотят полностью убрать поля Имя и Email из формы комментариев, вот небольшой кусочек кода, который необходимо вставить в файл functions.php вашей темы или в :

    Function wpb_alter_comment_form_fields($fields) { unset($fields["author"]); unset($fields["email"]); unset($fields["url"]); return $fields; } add_filter("comment_form_default_fields", "wpb_alter_comment_form_fields");

    Если ваша форма отображает текст Your email address will not be published (Ваш email не будет опубликован), то вы можете скрыть ее путем редактирования файла comments.php темы. Найдите тег и замените ее следующим кодом:

    Если вы не можете найти comment_form , то вы можете просто скрыть этот текст путем добавления следующего кода CSS в вашу тему либо в дочернюю, в файл style.css :

    Comment-notes { display:none; }

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

    Предупреждение об анонимных комментариях

    Обратите внимание, что без обязательных полей имении почты ваша форма будет привлекать огромное количество спама. И пусть даже Akismet и Sucuri могут блокировать некоторые «плохие» IP, мы крайне рекомендуем добавить капчу, чтобы снизить поток спама.

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

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

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

    Вот что мы сделаем:

    • Полная пользовательская настройка
    • Оформление внешнего вида
    • Нумерация комментариев
    • Подсчет сообщений каждого пользователя
    • Присвоить статус каждому пользователю
    • И прочее мелочи

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

    Пользовательская настройка комментариев

    В WordPress’e вывод комментариев осуществляется через функцию wp_list_comments , обычно в файле comments.php . А формирование отдельных функций так же, как и сам цикл, используется из шаблона системного файла comment-template.php . Но в редких случаях бывает, что настройка может находиться в теме WordPress, файл functions.php или comments.php .

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

    If (! function_exists("my_comment")) : function my_comments($comment, $args, $depth) { global $commentnumber; $GLOBALS["comment"] = $comment; switch ($comment->comment_type) : case "pingback" : case "trackback" : ?>

  • После этих манипуляций ваши комментарии будут формироваться по шаблонной функции из файла functions.php текущей темы.

    Подсчет комментариев каждого пользователя

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

    Открываем уже знакомый нам файл functions.php и прописывает в конце перед знаком?> следующий код:

    //подсчет сообщений пользователей function bac_comment_count_per_user() { global $wpdb; $comment_count = $wpdb->get_var("SELECT COUNT(comment_ID) FROM ". $wpdb->comments. " WHERE comment_author_email = "" . get_comment_author_email() ."" AND comment_approved = "1" AND comment_type NOT IN ("pingback", "trackback")"); if ($comment_count == 1) { echo " 1 Сообщение"; } else { echo " " . $comment_count . " Сообщений"; } }

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

    Подсчет сообщений будет происходить на основе e-mail пользователя как зарегистрированных, так и нет. Комментарии учитываются только подтвержденные администратором сайта, а в режиме ожидания и удаленные нет.

    Присваиваем статус каждому пользователю в зависимости от количества его комментариев

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

    Снова открываем файл functions.php и перед знаком?> добавляем следующий код:

    //статус пользователя function get_author_class($comment_author_email,$user_id){ global $wpdb; $adminEmail = get_option("admin_email"); $author_count = count($wpdb->get_results("SELECT comment_ID as author_count FROM $wpdb->АдминUseR"; if($author_count>=1 && $author_count=50 && $author_count=100 && $author_count=250 && $author_count=400 &&$author_count=800 && $author_countПрофессор"; }

    И в желаемом месте выводим функцию вызова:

    Объяснение: функция, как и предыдущая, связана с электронной почтой юзера. Только здесь основной задачей является непросто счет сообщений, а количество от и до в зависимости от установленного числа. И как только пользователь достигает его он получает определенную должность. Всего статусов имеется 7, плюс админ и знак отличия для зарегистрированных участников.

    Полностью готовый код комментариев

    Вот мы и подошли к концу этой статьи. Тут я не поленился, собрав все функции, включая настройку комментариев в один готовый код. Добавил свои стили оформления внешнего вида и в результате получилось что-то вроде мини-форума.

    Открываем файл functions.php и в конце перед знаком?> добавляем следующий код:

    //подсчет сообщений пользователей function bac_comment_count_per_user() { global $wpdb; $comment_count = $wpdb->get_var("SELECT COUNT(comment_ID) FROM ". $wpdb->comments. " WHERE comment_author_email = "" . get_comment_author_email() ."" AND comment_approved = "1" AND comment_type NOT IN ("pingback", "trackback")"); if ($comment_count == 1) { echo " 1 Сообщение"; } else { echo " " . $comment_count . " Сообщений"; } } //статус пользователя function get_author_class($comment_author_email,$user_id){ global $wpdb; $adminEmail = get_option("admin_email"); $author_count = count($wpdb->get_results("SELECT comment_ID as author_count FROM $wpdb->comments WHERE comment_author_email = "$comment_author_email" ")); if($comment_author_email ==$adminEmail) echo "Админ"; if($user_id!=0 && $comment_author_email !=$adminEmail) echo "UseR"; if($author_count>=1 && $author_count=50 && $author_count=100 && $author_count=250 && $author_count=400 &&$author_count=800 && $author_count=1200 && $comment_author_email !==$adminEmail) echo "Профессор"; } //пользовательская настройка комментариев if (! function_exists("wordsmall_comment")) : function wordsmall_comment($comment, $args, $depth) { global $commentnumber; $GLOBALS["comment"] = $comment; switch ($comment->comment_type) : case "pingback" : case "trackback" : ?> @ Ответ для:

    Меняем на эту:

    Заключительный шаг. Открываем файл style.css и в конце прописываем следующие стили:

    My_commentlist{ border-top:none; } .my_commentlist .comment{ padding:0 0 15px 0; border:none; } .my_commentlist .pingback{ padding:0 0 15px 0; border:none; } .my_commentlist .comment .children { list-style-type: none; padding:0px; margin-left:0px;/*если нужен отступ для древовидных ком. поставьте 15px*/ } .my_commentlist .comment .children .comment{ margin:15px 0 0 0; border:none; padding: 0; } #comments { background: #fff; } #comments .my_commentlist { margin: 10px 0; padding: 0; list-style:none; background: #ebf0f3; padding: 5px; } #comments .my_commentlist .comment { margin:0; padding: 0 0 10px; background: #fff; } #comments .my_commentlist .my_comment-author { display: inline; border-right: 1px solid #e0e0e0; width: 100px; float: left; margin: 0px 15px 10px 0; } #comments .my_commentlist .commentmetadata { float:left; } #comments .my_commentlist p { clear:none; color: #555; font: 14px arial; line-height: 23px; } #comments .my_commentlist .comment-content { margin-left: 116px; padding-right: 10px; } #comments .my_commentlist .reply { text-align:right; } #comments .my_commentlist .reply a{ background: #f5f5f5; border: 1px solid rgba(0, 0, 0, 0.06); border-radius: 2px; color: #515456; display: inline-block; font-size: 13px; font-weight: normal; line-height: 30px; margin-right: 15px; min-height: 30px; padding: 0 12px; text-align: center; text-decoration: none; } .my_commentlist .avatar{ border: medium none; border-radius: 50%; float: none; margin: 5px auto; padding: 0px; display: table; } .my_commentlist .comment-header{ height: 30px; background: #DEE5EB; margin-bottom: 15px; } .my_commentlist cite.fn{ color: #444; font: bold 13px/30px arial; padding-left: 10px; } .my_commentlist .com_date { color: #8ca0b5; font: normal 13px/30px arial; float: right; padding-right: 15px; } .my_commentlist .commentnumber { color: #8ca0b5; float: right; font: italic 13px/30px arial; padding-right: 15px; } .my_commentlist .comment-body { overflow: hidden; position: relative; background:#fff; } .my_commentlist .rep-authorcom { color: #25394e; font-size: 13px; line-height: 30px; } .my_commentlist .edit-link a { background: none !important; border: none !important; border-radius: 0 !important; color: #999!important; display: inline-block; font-size: 11px !important; font-weight: normal; line-height: 30px; margin-right: 5px !important; min-height: 30px; padding: 0 !important; text-align: center; text-decoration: none; } .com_per { border: medium none; color: #666; display: block; font-size: 11px; text-align: center; } .vip1,.vip, .vp, .vip2, .vip3, .vip4, .vip5, .vip6, .vip7 { border: medium none; font: bold 13px arial; display: block; text-align: center; margin-bottom: 5px; text-decoration: none; } .vp {color: #e82e24;} .vip1 {color: #348be8;} .vip2 {color: #BE005E;} .vip3 {color: #2e517e;} .vip4 {color: #658a18;} .vip5 {color: #00A56D;} .vip6 {color: #e35d28;} .vip7 {color: #99A400;} .vip {color: #4c5176;font-size: 11px;margin: 0;}

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

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

    Шаг 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 . По умолчанию для функции используется следующий список полей:

    $fields = array("author" => "

    " . "" . __("Name") . " " . ($req ? "*" : "") . "

    ", "email" => "", "url" => "

    " . __("Website") . "" . "

    ",);

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

    $commenter = wp_get_current_commenter(); $req = get_option("require_name_email"); $aria_req = ($req ? " aria-required="true"" : ""); $fields = array("author" => "

    " . "" . __("Name") . " " . ($req ? "*" : "") . "

    ", "email" => "",); $comments_args = array("fields" => $fields); comment_form($comments_args);

    В дополнение также сменим название формы на ‘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" => "

    " . "" . __("Name") . " " . ($req ? "*" : "") . "

    ", "email" => "",); $comments_args = array("fields" => $fields, "title_reply"=>"Please give us your valuable comment", "label_submit" => "Send My Comment"); comment_form($comments_args);

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

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

    Также форма комментария 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");

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

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

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

    Function add_comment_fields($fields) { $fields["age"] = "

    " . __("Age") . "" . "

    "; return $fields; } add_filter("comment_form_default_fields","add_comment_fields");

    #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_post ‘:

    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);

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

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

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

    Function add_comment_fields($fields) { if(is_singular("books")) { $fields["age"] = "

    " . __("Age") . "" . "

    "; } return $fields; } add_filter("comment_form_default_fields","add_comment_fields");

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

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

    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 будет вызываться для каждой записи.

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

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

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

    Function my_comments_callback($comment, $args, $depth) { $GLOBALS["comment"] = $comment; ?>

    © 2024 tdv-elektro.ru
    Windows. Железо. Интернет. Безопасность. Программы