Налаштовуємо коментарі у WordPress. Дозволяємо користувачам залишати анонімні коментарі в WordPress Як повністю видалити поля Ім'я та Email з форми коментарів

💖 Подобається?Поділися з друзями посиланням

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 background: #eee;-webkit-box-shadow: 1px 2px 2px rgba(204,204,204,0.8); 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; ?>

">

Розповісти друзям