Давненько я ничего не писал про WordPress. Поэтому сегодня я поделюсь с Вами тем, как можно вручную изменить форму комментирования в ВордПрессе. Думаю, что эти знания могут пригодиться любому начинающему блогеру, ведь форма комментирования это, порой, единственное средство общения посетителей и автора. Не проходите мимо:)
Перед тем, как мы начнем какие-либо манипуляции с кодом, хочу Вас заранее предупредить, что мы будем править файлы самого WordPress’a, а не файлы темы. Да, это может-быть покажется кому-то опасным, кому-то бессмысленным, кому-то просто не понравится:) Но Я сделал это именно так и никаких проблем у меня не возникло. Советую перед началом сделать бекап редактируемого файла.
Насчет безопасности предупредил, теперь хочу показать результат, к которому я пришел.
Как мы видим, была убрана строчка «Ваш e-mail не будет опубликован. Обязательные поля помечены *». Не нужно считать посетителей безмозглыми идиотами. Они итак понимают что нужно заполнять, а что нет. Так же я спрятал названия полей внутрь самих полей. К чему эти жирные записи? Большинство посетителей уже и без названий полей может «на глаз» определить, какое к чему относится. Но внутренние хинты все таки должны присутствовать. Ну и подпись к полю комментария утратила свою ненужную жирноту. На мой взгляд, так стало гораздо лучше и свободней.
Так давайте же скорее все менять! ;)
Идем в папку своего сайта и находим в нем файл wp-includes/comment-template.php. Ищем в нем строку 1522, да да именно ее. Как я сам ее нашел это целая история, расскажу об этом чуть позже:)
Итак, открываем файл на редактирование и переходим к 1522 строчке. Сейчас она и следующие (до 1529й) примерно такие:
$fields = array("author" => "
", "email" => "" . __("Email") . " " . ($req ? "*" : "") . "
", "url" => "" . __("Website") . "" . "
",);Как все просто и понятно. Достаточно просто вырезать все лишнее и немного дописать. Дописывать будет параметр
Placeholder="Текст подсказки"
Этот параметр позволяет выводить внутри полей любой текст. Используем его для вывода подсказок:
"
" "" ""Удалять же будем строки:
"
" . __("Email") . " " . ($req ? "*" : "") "
" . __("Website") . ""
Они отвечают за вывод подписей над полями.
В результате ВСЕХ этих манипуляций, получаем следующее:
$fields = array("author" => "
", "email" => "", "url" => "",);Остается только удалить глупую подсказку «Ваш e-mail не будет опубликован. Обязательные поля помечены *». Для этого удаляем строку (примерно 1537):
"comment_notes_before" => "
" . __("Your email address will not be published.") . ($req ? $required_text: "") . "
",Вот вроде бы и все, теперь наша форма стала немного более привлекательной. Надеюсь эта информация кому-то пригодится:)
Подписывайтесь , комментируйте, буду рад любым адекватным замечаниям. Может-быть я сам чего-то не знаю и можно это сделать по-другому, поделитесь своими соображениями.
В 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 - используется для изменения текста на кнопке отправки комментария.
Теперь настроим нашу форму комментария с помощью передачи аргументов в функцию comment_form .
В случае, если нам нужно настроить поля в форме комментариев, нужно передать их список в функцию comment_form . По умолчанию для функции используется следующий список полей:
$fields = array("author" => "
", "email" => "" . __("Email") . " " . ($req ? "*" : "") . "
", "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" => "
", "email" => "" . __("Email") . " " . ($req ? "*" : "") . "
",); $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" => "
", "email" => "" . __("Email") . " " . ($req ? "*" : "") . "
",); $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; ?>