Створюємо нові поля для коментарів WordPress

Як краще створювати нові поля?

Заходимо в розділ адмінки "Плагіни" і бачимо наш плагін:

Його вже можна активувати, але на даний момент він "порожній" і жодних функцій поки що не виконує.

Код чудово працює, але якщо не потрібно змінювати вигляд дефолтних полів, то його можна спростити, а саме додати тільки своє поле:

Створення полів для всіх користувачів

wordpress

нові

Тобто. в результаті потрібно вивести поля в момент спрацювання однієї з подій: comment_form_logged_in_after або comment_form_after_fields .

Щоб відобразити 5 радіокнопок для рейтингу, запускаємо цикл. Цю ділянку коду можна змінити під себе, наприклад замість 5 вказати 10.

Збереження даних із полів у фронт-енді

Зауважте, що для захисту ми очищаємо поля через sanitize_text_field().

меню

Перевірка заповнення обов'язкових полів

Відображення вмісту метаполів у фронт-енді

Змінити код форми і додати потрібні дані можна через фільтр comment_text.

Два варіанти виведення рейтингу

Розглянемо два варіанти, як можна було б відобразити рейтинг.

Зірки рейтингу із власних картинок

У першому варіанті ми будемо відображати зображення зірок, які мають бути у вигляді картинок у папці плагіна:

Якщо, наприклад, користувач поставив четвірку, шлях до картинки буде: http://site.ru/wp-content/plugins/extend-comment/images/4star.gif . Звичайно, картинки повинні існувати.

Зірки рейтингу з іконного шрифту Dashicons

Другий варіант за алгоритмом такий самий, але тут будемо використовувати рідну функцію WordPress wp_star_rating(), яка сама додасть красиві іконки зірок:

У фронт-енді функція wp_star_rating() непрацює, її треба підключити. Також потрібно підключити шрифти 'dashicons'.

Шрифт 'dashicons' має об'єм 45,3Кб без gzip стиснення і 28.3Кб з включеним на сервері стиском. А скільки займатимуть місця ваші картинки? Який із способів вибрати – вирішувати вам.

Виведення метаполів у адмінці

Отримує дані метаполів.

wp_nonce_field() виводить перевірочне (захисне, одноразове) приховане поле форми, підвищуючи безпеку.

Очищає вміст метаполів за допомогою esc_attr() та виводить на екран. Нічого не перевіряє. Якщо даних немає, поле буде порожнє.

  • При виведенні радіокнопок перевіряє, яке значення було вибрано і позначає html атрибутом checked='checked' за допомогою функції checked().
  • меню

    Збереження метаполів в адмінці

    Тут ми підключимося до хука edit_comment і робимо таке:

    Перевіримо nonce-код і якщо перевірка не пройде – зупинимо виконання функції.

  • Перевіримо передані дані по кожному полю і якщо якесь поле його немає - видалимо саме метаполі, щоб не займало місце в базі даних. Якщо поле є оновлюємо його і незабутнє очищати для безпеки.
  • меню

    Єдине, правилом хорошого тону вважається видалення даних, створювані плагіном, у разі - наших метаполів. Адже, якщо видалити плагін, то дані плагіна залишаться нікому не потрібними.

    Ми вже розповідали, як правильно видалити плагін WordPress, тому докорінно плагіна створимо файл uninstall.php і пропишемо в нього:

    Висновок середнього рейтингу

    У цій статті ми розібралися: