Функціонал 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)
Дозволяє змінити текст кнопки "Зберегти зміни" на довільний.
Приклад створення контейнера:
Приклад зміни тексту кнопки на основі прикладу вище:
Даний метод може відпрацювати не так, як очікувалося, якщо використовувати кирилицю при вказівці імені контейнеру, наприклад:
Універсальне рішення проблеми - використовувати таку ж конструкцію, що і в самому плагін:
Поля для взаємин і асоціацій
(Filter) carbon_relationship_title ($ title, $ name, $ id, $ type, $ subtype)
Дозволяє змінювати заголовок елементів відносини / асоціації. Корисно при реалізації користувальницьких відносин / зв'язків. Приймає наступні параметри:
- $ Title - заголовок пункту
- $ Name - ім'я поля
- $ Id - ID поста, таксономії і т.д.
- $ Type - основний тип об'єкта (post, term, user, comment і т.д)
- $ Subtype - підтип, що доповнює основний (page, post, category і т.д)
(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-розробник. Розробка сайтів та Лендінзі. Доопрацювання існуючих проектів. Супровід ресурсів.