Плагин Carbon fields. Часть 2 — Использование

Автор: | 19.06.2019

Container — это группа настраиваемых полей и параметров отображения. Они отображаются на различных частях бэкэнда в соответствии с заданным типом и параметрами отображения.

По умолчанию все контейнеры отображаются на всех объектах в зависимости от их типа (posts для post_meta, terms для term_metaи т. д.) и редактируются всеми пользователями, которые могут получить доступ к соответствующему экрану редактирования.

Для создания нового контейнера необходимо указать тип и заголовок:

 

use Carbon_Fields\Container;

use Carbon_Fields\Field;

Container::make( 'post_meta', 'Custom Data' )

->where( 'post_type', '=', 'page' )

 

Для создания нового контейнера, вы просто используете метод Container:: make ($type, $title), где:

 

Parameter Description
$type Идентификатор типа контейнера (допустимые значения post_meta, term_meta, user_meta, comment_meta, nav_menu_item , theme_options).
$title Название контейнера.

Кроме того, можно передать идентификатор контейнера с помощью записи Container:: make ($type, $id, $title ), где:

Parameter Description
$type Идентификатор типа контейнера (допустимые значения post_meta, term_meta, user_meta, comment_meta, nav_menu_item , theme_options).
$id Уникальное id контейнера.  Автоматически с префиксом carbon_fields_container_
$title Название контейнера.

Условное отображение

Контейнеры очень гибки по отношению к вариантам отображения. По умолчанию контейнеры отображаются на всех связанных объектах (все типы post для post meta container, все terms для term meta container и т. д.), однако можно ограничить видимость контейнера конкретными типами записей, терминами таксономии, уровнями иерархии и т. д. с неограниченной сложностью.

Добавление условия отображения выполняется с помощью одного из следующих методов:

->where( $condition, $comparison_operator, $value )— добавляет условие с AND (и)

->or_where( $condition, $comparison_operator, $value )— добавляет состояние OR (или )

Примечание: условия цепочки ведут себя точно так же, как обычный оператор php if с несколькими условиями.

описание параметров

Parameter Description
$condition Имя типа условия в виде строки (подробней в следующей статье)
$comparison_operator Может быть одним из следующих: ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘IN’, ‘NOT IN’, ‘CUSTOM’
$value Значение для проверки. IN и NOT IN операторы ожидают массив; CUSTOM оператор ожидает вызова

Пользовательский оператор сравнения

Этот оператор позволяет указать вызываемый объект, который должен возвращать логическое значение независимо от того, выполняется это условие или нет. Таким образом, у вас больше контроля над тем, как сравнивается значение, если встроенная функциональность не соответствует вашим потребностям.

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

 

Container::make( 'post_meta', 'Custom Data' )

->where( 'post_type', '=', 'page' )

->where( 'post_level', 'CUSTOM', function( $post_level ) {

return ( $post_level % 2 === 0 );

} );

 

ПРИМЕРЫ

Покажем Post Meta Container на всех страницах

 

Container::make( 'post_meta', 'Custom Data' )

->where( 'post_type', '=', 'page' )

->add_fields( array( ... ) );

 

Покажем Post Meta Container на статической домашней странице

 

Container::make( 'post_meta', 'Custom Data' )

->where( 'post_id', '=', get_option( 'page_on_front' ) )

->add_fields( array( ... ) );

 

Покажем User Meta Container, только если текущий пользователь является администратором или редактором

 

Container::make( 'post_meta', 'Custom Data' )

->where( 'current_user_role', 'IN', array( 'administrator', 'editor' ) )

->add_fields( array( ... ) );

 

Вложенные логические

Для достижения вложенной логики отображения where() и or_where() методы также поддерживают вызов с callable:

 

Container::make( 'post_meta', 'Custom Data' )

-> where( function( $lvl1_condition ) {

$lvl1_condition ->where( $condition, $comparison_operator, $value );

$lvl1_condition ->where( function( $lvl2_condition ) {

...// может быть вложений бесконечное множество

});

...

});

 

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

 

Container::make( 'post_meta', 'Custom Data' )

->where( 'current_user_role', '=', 'administrator' )

->or_where( function( $condition ) {

$condition->where( 'current_user_role', '=', 'editor' );

$condition->where( 'post_type', '=', 'page' );

} );

 

Плагин Carbon fields. Часть 4.2 –Типы полей. Complex.
Плагин Carbon fields. Часть 4.2 –Типы полей. Complex.

Сложные поля в Carbon fields, действуют как контейнеры, в которые Read more

Плагин Carbon fields. Часть 4.2 –Типы полей. Медиа (file, Image,Media Gallery)
Плагин Carbon fields. Часть 4.2 –Типы полей. Медиа (file, Image,Media Gallery)

Плагин Carbon fields позволяет загружать на станицы и записи медиа-файлы Read more

Плагин Carbon fields. Часть 4.2 –Типы полей. Дата и время.
Плагин Carbon fields. Часть 4.2 –Типы полей. Дата и время.

Продолжаем знакомство с плагином для создания произвольных полей Carbon fields. Read more

Плагин Carbon fields. Часть 3.3 — Comment Meta, Term Meta
Carbon fields Comment Meta

Продолжаем изучать плагин для создания произвольных полей Carbon fields. Сегодня Read more

Плагин Carbon fields. Часть 3.2 – Типы Контейнеров. Theme Options.
Theme Options

Контейнер Theme option используется для добавления страниц с различными параметрами Read more

Плагин Carbon fields. Часть 3 – Типы условий
Плагин Carbon fields

Напомню, что в прошлой статье я рассказала о том, как Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

7 + 4 =