Novinka: Vizuální editor pro éru AI webů: www.directedit.dev

💬

Jak napojit ACF Photo Gallery Field do Bricks

Že Bricks nepodporuje ACF Photo gallery field? Tady máte řešení.

Jitka Klingenbergová
Jitka Klingenbergová
Vytvořeno: 19. 7. 2026 | Aktualizováno: 4. 9. 2026

Co se v článku dozvíte

Pokud nechcete kvůli galeriím do plugin ACF hned kupovat placený plugin, je možnost použít doplněk, který vám je tam jednoduše povolí přidat: ACF Photo Gallery Field. Ale při práci v Bricks narazíte na problém, že tam nejsou metadata správně registrována. A tady najdete návod, jak na to.

Kód

Toto celé bude fungovat za předpokladu, že máte na webu (v child theme nebo snippetu) tento kód:


/**
 * Vrátí ID obrázků z ACF Photo Gallery pole.
 *
 * @param string   $field   Název ACF pole.
 * @param int|null $post_id ID příspěvku. Když není zadané, použije aktuální post.
 *
 * @return array<int>
 */
function jk_acf_galerie_ids($field = 'galerie', $post_id = null)
{
    $field = sanitize_key($field);
    $post_id = $post_id ? (int) $post_id : get_the_ID();

    if (!$post_id) {
        $post_id = get_queried_object_id();
    }

    if (!$field || !$post_id) {
        return [];
    }

    if (function_exists('acf_photo_gallery')) {
        $images = acf_photo_gallery($field, $post_id);

        if (is_array($images)) {
            $ids = [];

            foreach ($images as $image) {
                if (!empty($image['id'])) {
                    $ids[] = (int) $image['id'];
                }
            }

            return array_values(array_unique(array_filter($ids)));
        }
    }

    $raw_value = get_post_meta($post_id, $field, true);

    if (!is_string($raw_value) || $raw_value === '') {
        return [];
    }

    return array_values(array_unique(array_filter(array_map('absint', explode(',', $raw_value)))));
}

function jk_acf_photo_gallery_field_to_gallery($field = 'galerie', $post_id = null)
{
    return jk_acf_galerie_ids($field, $post_id);
}

function jk_acf_photo_gallery_field_to_image_loop($field = 'galerie', $post_id = null)
{
    $ids = jk_acf_galerie_ids($field, $post_id);

    return [
        'post_type' => 'attachment',
        'post_status' => 'inherit',
        'post_mime_type' => 'image',
        'post__in' => $ids ?: [0],
        'orderby' => 'post__in',
        'posts_per_page' => $ids ? count($ids) : 1,
        'ignore_sticky_posts' => true,
        'no_found_rows' => true,
    ];
}

add_filter('bricks/code/echo_function_names', function ($function_name) {
    $allowed = [
        'jk_acf_photo_gallery_field_to_gallery',
        'jk_acf_photo_gallery_field_to_image_loop',
    ];

    if (in_array($function_name, $allowed, true)) {
        return true;
    }

    return $function_name;
});

Modul Gallery

Vložíte klasický modul galerie a do něj dáte jako dynamická data tento kód (jako dynamickou funkci echo, tedy obalené ještě závorkami { }:

//obalit složenými závorkami!

echo:jk_acf_photo_gallery_field_to_gallery('galerie')
image 1

A to je vše.. Díky tomu se vám obrázky z ACF pole typu galerie zobrazí v Bricks galerii a můžete je klasicky formátovat a normálně s nimi pracovat.

Loop s obrázky

Co se týče smyčky (abyste si obrázky mohli vypsat třeba do slideru a podobně), tak tam je to trochu jiné.

Uděláte si strukturu:

  • Block (jako obalovací rodič, abyste si mohli určovat zobrazení všech obrázků)
    • Div (loop)
      • Image (samotný obrázek)

Loop pak bude mít custom kód pouze s jedním řádkem (není třeba upravovat):

//bez úprav

return jk_acf_photo_gallery_field_to_image_loop('galerie');

A do obrázku dáte jen dynamická data, která vezmou post_id (pozor, opět obalit složenými závorkami):

//obalit složenými závorkami!

post_id

Ukázka loopu

image
image 2

Pošlete to dál:

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Vaše komentáře

Zanechte první komentář

Pravidelná dávka užitečných tipů až do schránky