Напомню, что в прошлой статье я рассказала о том, как использовать плагин Carbon fields, в частности о методе создания контейнера Container:: make ($type, $title), и условных отображениях с помощью одного из следующих методов:
->where( $condition, $comparison_operator, $value )- добавляет условие с AND (и) ->or_where( $condition, $comparison_operator, $value )- добавляет состояние OR (или ).
Сегодня я подробнее остановлюсь на имени типа условий $condition
Итак, какие бывают типы условий (Condition Types).
post_meta (произвольные поля)
Контейнер будет отображаться на страницах редактирования постов (записей, страниц, произвольных типов записей)
Пример
// Отобразить container на странице с id=2
use Carbon_Fields\Container; use Carbon_Fields\Field; Container::make( 'post_meta', __( 'Homepage Settings' ) ) ->where( 'post_type', '=', 'page' ) ->where( 'post_id', '=', '2' ) ->add_fields(array( Field::make('text', 'crb_custom_text'), Field::make('image', 'crb_photo'), ));
Вот, что должно получиться
term_meta (таксономии)
Для добавления дополнительных полей в рубрики, мета и так далее.
Пример
// Отображение контейнера в таксономии категорий книг
Container::make( 'post_meta', __( 'Book Category Data' ) ) ->where( 'term_taxonomy', '=', 'crb_book_category' ) ->add_fields( array( .. ) );
User Meta (пользователи)
Для редактирования учетных записей пользователей.
Пример
// Отображение контейнера только для администраторов
Container::make( 'post_meta', __( 'Administrator' ) ) ->where( 'user_role', '=', 'administrator' ) ->add_fields( array( .. ) );
theme_options
Доступные условия
Приведенные ниже условия применимы к любому контейнеру и зависят от текущего пользователя
Пример
Параметры отображения темы страницы для пользователей, которые имеют возможности ‘manage_options’
Container::make( 'theme_options', __( 'Theme Options' ) ) ->where( 'current_user_capability', '=', 'manage_options' ) ->add_fields( array( .. ) )
Описание терминов
Условия, связанные с терминами, предполагают, что вы предоставляете им описание термина в качестве значения (массив дескрипторов термина для операторов IN и NOT IN).
Дескриптор термина — это массив, который имеет следующие ключи:
Пример использования
Container::make( 'post_meta', 'Custom Data' ) ->where( 'post_term', '=', array( 'field' => 'slug', 'value' => 'featured', 'taxonomy' => 'category', ) )
Вкладки
Вкладки позволяют группировать несколько полей под разными панелями вкладок с помощью контейнерного метода add_tab ().
Вкладки можно использовать для всех типов контейнеров.
Пример:
use Carbon_Fields\Container; use Carbon_Fields\Field; Container::make( 'post_meta', __( 'User Settings' ) ) ->where( 'post_type', '=', 'page' ) ->add_tab( __( 'Profile' ), array( Field::make( 'text', 'crb_first_name', __( 'First Name' ) ), Field::make( 'text', 'crb_last_name', __( 'Last Name' ) ), Field::make( 'text', 'crb_position', __( 'Position' ) ), ) ) ->add_tab( __( 'Notification' ), array( Field::make( 'text', 'crb_email', __( 'Notification Email' ) ), Field::make( 'text', 'crb_phone', __( 'Phone Number' ) ), ) );
Здесь мы добавили текстовые вкладки в контейнер, который будет отображаться на странице записей. Вот как это выглядит: