Carbon Fields для WordPress

Установка

Качаем отсюда - https://carbonfields.net/zip/latest/ и устанавливаем через админку. Не распаковывая отправляем на установку zip-архив.

Интерфейса в админке нет, всё подключается php кодом, но это скорее плюс, чем минус.

Весь код пишем в файле functions.php, либо, как я рекомендую делать, выносим в отдельный файл и подключаем в function.php через require_once().

Подключение

Во-первых, нужно подключить классы:

use Carbon_Fields\Container;
use Carbon_Fields\Field;

Во-вторых, функция добавления полей подключается через хук:

add_action( 'carbon_fields_register_fields', 'crb_attach_post_options' );
function crb_attach_post_options() { ... }

Создание

Есть три сущности:

  • Container - создает область на странице, куда будут добавлены поля;
  • Field - поля, которые можно положить в контейнер;
  • Data Storage - управляет хранением данных, можно покаю.

Создать контейнер

Внутри нашей функции вызываем функцию для создания контейнера

Container::make( 'post_meta', 'Настройки страницы' )

Это создаст контейер на всех страницах, постах и кастомных постах. Название контейнера будет 'Настройки страницы'. Существуют разные варианты мест куда поместить контейнер, но об этом позже.

Сейчас создадим поле и получим минимально рабочий код.

Создание полей

Поля создаются вызовом метода add_fields:

Container::make( 'post_meta', 'Настройки страницы' )->add_fields( array(
        Field::make( 'text', 'crb_phone_number', 'Телефон' ),
        Field::make( 'text', 'crb_mail_address', 'Почта' ),
    ));

Минимально рабочий код

Мы подключили классы плагина, создали функцию, добавили в нее контейнер, добавили в него поля и подключили всё это через хук.

use Carbon_Fields\Container;
use Carbon_Fields\Field;

add_action( 'carbon_fields_register_fields', 'crb_attach_post_options' );
function crb_attach_post_options() { 
  Container::make( 'post_meta', 'Настройки страницы' )->add_fields( array(
        Field::make( 'text', 'crb_width', 'Ширина' ),
        Field::make( 'text', 'crb_height', 'Высота' ),
    ));
}