Работа с Advanced Custom Fields (ACF) предоставляет разработчикам WordPress неограниченные возможности для кастомизации контента. В этом руководстве я покажу, как с помощью ACF можно создать динамическую галерею изображений, вывести её через редактор Гутенберга и добавить поддержку Lightbox для удобного просмотра.
Шаг 1: Регистрация кастомного блока для галереи
Для того чтобы вывести галерею через редактор Гутенберга, нам нужно зарегистрировать кастомный блок в WordPress.
1.1 Установка и настройка ACF Pro
Создание кастомных блоков доступно в ACF Pro, который позволяет интегрировать произвольные поля в блоки Гутенберга.
- Установите и активируйте плагин ACF Pro.
- Перейдите в файл
functions.phpвашей темы и добавьте следующий код для регистрации нового блока:
function register_acf_gallery_block() {
if( function_exists('acf_register_block_type') ) {
acf_register_block_type(array(
'name' => 'acf-gallery',
'title' => __('Галерея ACF'),
'description' => __('Блок для отображения галереи с использованием ACF.'),
'render_callback' => 'render_acf_gallery_block',
'category' => 'common',
'icon' => 'images-alt2',
'keywords' => array( 'acf', 'gallery', 'галерея' ),
));
}
}
add_action('acf/init', 'register_acf_gallery_block');
Этот код создаёт новый блок с именем Галерея ACF, который будет доступен в редакторе блоков Гутенберга.
1.2 Рендеринг блока
Добавим функцию для рендеринга блока, которая будет выводить галерею:
function render_acf_gallery_block( $block, $content = '', $is_preview = false ) {
$images = get_field('rgallery'); // Получаем изображения из галереи ACF
if( $images ): ?>
<div class="acf-gallery-block">
<?php foreach( $images as $image ): ?>
<a href="<?php echo esc_url($image['url']); ?>" data-rel="lightbox-gallery">
<img src="<?php echo esc_url($image['sizes']['thumbnail']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
</a>
<?php endforeach; ?>
</div>
<?php endif;
}
Шаг 2: Создание поля галереи в ACF
Теперь, когда блок готов, нам нужно добавить динамическое поле для галереи через интерфейс ACF.
- Перейдите в админку WordPress и выберите Custom Fields → Add New.
- Создайте новую группу полей и добавьте поле типа Gallery (Галерея), задав ему имя, например,
rgallery. - В разделе Location (Местонахождение) укажите:
- Block → is equal to → acf-gallery.
Теперь данное поле будет отображаться только для блока Галерея ACF.
Шаг 3: Использование блока в Гутенберге
- Откройте или создайте новую запись.
- В редакторе блоков Гутенберга выберите блок Галерея ACF.
- Добавьте изображения в галерею через ACF.
- Сохраните запись, и галерея будет автоматически выведена на фронтенде.
Шаг 4: Стилизация галереи
Для того чтобы галерея выглядела красиво и была адаптивной, добавим стили:
.acf-gallery-block {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 10px;
justify-items: center;
}
.acf-gallery-block img {
width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.acf-gallery-block img:hover {
transform: scale(1.05);
}
Шаг 5: Подключение Lightbox
Для удобного просмотра изображений в галерее добавим поддержку Lightbox.
- Установите и активируйте плагин Responsive Lightbox & Gallery.
- Убедитесь, что Lightbox включен для изображений в настройках плагина.
- Измените ссылки на изображения в блоке, добавив атрибут
data-rel="lightbox-gallery".
Заключение
Теперь у вас есть гибкий инструмент для работы с динамической галереей изображений через ACF, интегрированной в редактор Гутенберга. Вы можете легко добавлять галереи в записи, а с помощью Lightbox — улучшить пользовательский опыт.
Создание кастомных блоков для ACF открывает массу возможностей для кастомизации WordPress. Если у вас возникнут вопросы или идеи по улучшению, дайте знать в комментариях!
