Можливість розширення carbon fields 1

Функціонал Carbon Fields легко розширюється, так як бібліотека написана в стилі ООП. Можна наслідувати класи контейнерів або полів, привносячи в них свої ідеї і вирішуючи більш широке коло завдань, ніж доступний з коробки.

Щоб краще зрозуміти, як працює бібліотека, пропонуємо крок за кроком створити новий тип поля. На github.com ви знайдете заготовку такого поля, яку залишається лише відредагувати під себе.

Шаблони - як змінити шаблон (вид) поля в Carbon Fields?

Дана бібліотека активно використовує шаблонизатор Underscore. У кожному класі довільного поля є метод template. який використовує шаблон Underscore.

Деякі поля мають більш одного шаблону. У цих випадках додаткові шаблони повинні бути додані окремими методами і зареєстровані через метод

В папці з контейнерами / carbon-fields / core / Container / створюємо файл My_Theme_Options_Container.php:

У призначеному для користувача файлі пишемо, наприклад:

І тепер замість посилання:

Яка, як відомо, при відправці комусь буде виглядати так:

Чи стане такий (за умови роботи плагінів транслітерації):

Вставити значення в вигляді очищеного HTML.

Щоб змінні були доступні в шаблоні, використовується PHP метод to_json (). Ось приклад додавання двох нових змінних (кількість рядків і висота поля):

Хукі в Carbon Fields

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

Викликається до реєстрації полів.

Викликається після того, як всі поля зареєстровані.

(Filter) carbon_template ($ html, $ name)

Застосовується до шаблону html перед тим, як помістити його в футер адмінки.

Такий же, як carbon_template. тільки можна вказати ім'я шаблону.

Контейнер для опцій теми

(Filter) carbon__button_label ($ label)

Дозволяє змінити текст кнопки "Зберегти зміни" на довільний.

Приклад створення контейнера:

Приклад зміни тексту кнопки на основі прикладу вище:

Можливість розширення carbon fields 1

Даний метод може відпрацювати не так, як очікувалося, якщо використовувати кирилицю при вказівці імені контейнеру, наприклад:

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

Поля для взаємин і асоціацій

(Filter) carbon_relationship_title ($ title, $ name, $ id, $ type, $ subtype)

Дозволяє змінювати заголовок елементів відносини / асоціації. Корисно при реалізації користувальницьких відносин / зв'язків. Приймає наступні параметри:

  • $ Title - заголовок пункту
  • $ Name - ім'я поля
  • $ Id - ID поста, таксономії і т.д.
  • $ Type - основний тип об'єкта (post, term, user, comment і т.д)
  • $ Subtype - підтип, що доповнює основний (page, post, category і т.д)

Можливість розширення carbon fields 1

(Filter) carbon_relationship_comment_length ($ number, $ name)

  • int $ number - кількість символів (за замовчуванням 30)
  • string $ name - Ім'я поля відносини / асоціації.

Нехай у нас є поле взаємин під ім'ям my_association і

(Filter) carbon_relationship_options__post_ ($ options)

Дозволяє змінювати доступні параметри поля відносин або асоціацій з ім'ям і типом поста.

Наприклад, ми створили поле асоціацій з ім'ям my_association і вказали відображатися в типі поста page (на сторінках), тоді ім'я фільтра буде:

Фільтр в коді плагіна оголошений наступним чином:

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

Зверніть увагу на подвійне підкреслення __ в назві хука. Нагадуємо, при збереженні Carbon Fields в початок імені поля дописує одне нижнє підкреслювання. При складанні назви хука використовується префікс у вигляді нижнього підкреслення для відділення складових частин. В результаті префікс і початок імені поля дають нам подвійне нижнє підкреслювання.

(Filter) carbon_relationship_options__taxonomy_ ($ options)

Принцип роботи, як і у попереднього фільтра. Дозволяє змінювати доступні параметри поля відносини / асоціації з ім'ям з таксономії.

Все той же приклад з полем my_association:

(Filter) carbon_relationship_options__user ($ options)

Все працює за тими ж правилами, що і попередні подібні хукі.

Зміна параметрів може стане в нагоді, наприклад, коли потрібно виключити самого себе зі списку асоціацій:

(Filter) carbon_relationship_options__comment ($ options)

Працює за тими ж правилами, що і попередні подібні хукі.

(Filter) carbon_relationship_options ($ options, $ name)

Загальний фільтр, через який проходить весь масив опцій полів для асоціацій і зв'язків.

Змінна $ name ім'я поля з підкресленням на початку, наприклад _my_association.

У змінній $ options знаходиться весь масив даних, ось витяг з подібного масиву:

Наприклад, не вдаючись до редагування файлу переклад ви можете змінити label на будь-який бажаний відповідно до type. А може хочете на основі type додати в масив нові дані і потім використовувати їх в шаблоні виведення поля в адмінці.

Поле для Gravity Form

Поле для карти Google

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

WordPress-розробник. Розробка сайтів та Лендінзі. Доопрацювання існуючих проектів. Супровід ресурсів.