Контейнеры в Custom 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'), ));
Вывод значений полей
Для доступа к значениям полей необходимо использовать функцию carbon_get_post_meta ($id, $name), где:
$id – ID поста, где было введено значение.
$name — имя поля, которое должно быть получено.
Эту конструкцию вставляем в то место шаблона, где должны появиться данные значения. В примере выше мы создали 2 поля – текст и картинку. Откроем любую страницу и заполним их
Откроем файл page.php и пропишем следующий текст
<!-- Simple field --> <p>Article was published in: <?php echo carbon_get_post_meta( get_the_ID(), 'crb_custom_text' ); ?></p>
Вывести картинку немного сложнее:
Сначала получим ID изображения.
$thumbnail_id = carbon_get_post_meta( get_the_ID(), 'crb_photo'); // получим ID картинки
Затем ссылку на картинку (второй параметр не обязательный, если его не указать, будет выводиться миниатюра).
$thumbnail_url = wp_get_attachment_image_url( $thumbnail_id, 'full' ); // ссылка на полный размер картинки по ID вложения ?>
Осталось вывести само изображение
<img src="<?php echo $thumbnail_url; ?>" alt="" />
Вывод комплексных полей
Позже я подробно расскажу о более сложных, комплексных полях, которые можно создать. Например, добавим комплексное поле для страниц
Field::make( 'complex', 'crb_slider', __( 'Slider' ) ) ->add_fields( array( Field::make( 'text', 'title', __( 'Slide Title' ) ), Field::make( 'image', 'photo', __( 'Slide Photo' ) ), ) )
Их вызывают немного по-другому. В том месте шаблона, где хотим вызвать поля нужно прописать:
$slides = carbon_get_post_meta( get_the_ID(), 'crb_slider' ); if ( $slides ) { foreach ($slides as $slide) { echo '<p>' . $slide['title'] . '</p>'; $thumbnail_id = $slide['photo']; // получим ID картинки из опции темы $thumbnail_url = wp_get_attachment_image_url( $thumbnail_id, 'full' ); // ссылка на полный размер картинки по ID вложения echo '<img src=" '. $thumbnail_url . '">'; } } ?>
Открываем страницу и видим:
Вы также можете использовать carbon_get_the_post_meta( $name ) для доступа к значениям текущей записи в цикле.
<p>Article was published in: <?php echo carbon_get_the_post_meta( 'crb_location' ); ?></p> <?php $slides = carbon_get_the_post_meta( 'crb_slides' ); ?>
Ужасно тупо не писать версию плагина, при таких больших отличиях версий….
Спасибо за важное замечание, хоть и выражено оно не в очень корректной форме…Версия плагина 3,0! Актуальная информация об изменениях в новых версиях на оф. сайте https://carbonfields.net