
Czas czytania: ~14 min · Poziom: średnio zaawansowany
Czy da się zbudować w pełni dynamiczny szablon Single w Elementorze i ACF bez ani jednej linijki PHP? Tak – pod warunkiem, że trzymasz się natywnej integracji Elementor Pro z Advanced Custom Fields i akceptujesz kilka jawnych ograniczeń. Głównie repeater i flexible content. Dynamiczny szablon WordPress oparty o ACF i Elementor Pro spina cztery elementy: Custom Post Type jako typ treści, Field Group jako kontener pól, Theme Builder jako miejsce projektowania layoutu, Dynamic Tags jako pomost między polem a widżetem. Ten artykuł prowadzi cię od wymagań środowiska, przez strukturę danych w ACF, po kompletny szablon Single dla CPT „Property” – z podpięciem każdej etykiety, ceny i zdjęcia przez Dynamic Tag. Po drodze pokażę, kiedy obietnica „bez PHP” się sprawdza, kiedy musisz sięgnąć po dodatek i kiedy lepiej w ogóle przeskoczyć na JetEngine.
- Elementor Pro ma natywną integrację z ACF 5+ – większość typów pól (tekst, obraz, URL, gallery, oembed, color_picker, date_picker) podepniesz przez Dynamic Tags bez kodu.
- Repeater, group i flexible content nie mają natywnego wsparcia – potrzebujesz dodatku Dynamic Content for Elementor albo Dynamic Elementor ACF Repeater.
- Minimum środowiska: WordPress 6.5+, PHP 7.4+ (rekomendowane 8.4–8.5), 256 MB pamięci (512 MB dla większych witryn), Elementor Pro w aktualnej wersji, ACF 6.8.x.
- Trzon każdego dynamicznego szablonu Single: CPT + Field Group z Location Rules + Single Template w Theme Builderze + Preview Settings + Display Conditions.
- Najczęstsze pułapki: pole nie pojawia się w liście Dynamic Tags (zła lokalizacja Field Group, puste dane), URL nie działa jako link (zły widżet), konflikty po aktualizacji Elementor Pro, problemy z WPML, cache zasłaniający świeże dane.
Co tak naprawdę znaczy „100% dynamiczny szablon WordPress” w duecie ACF i Elementor?
W skrócie: każda widoczna treść w szablonie – tytuł, opis, zdjęcia, cena, telefon, CTA, link do mapy – pochodzi z bazy danych, a nie z ręcznie wpisanego pola w builderze. Layout projektujesz raz. Dane podpinasz przez Dynamic Tags, które ciągną wartości z core’owych pól WordPressa (Post Title, Featured Image, Author) i z pól ACF (cena, metraż, galeria). Dodanie nowego wpisu w CPT sprowadza się wtedy do wypełnienia pól w panelu – szablon zajmuje się resztą.
Czym jest dynamic content w Elementor Pro i czemu wymaga wersji Pro?
Dynamic content to mechanizm, którym Elementor wstrzykuje do widżetów dane pochodzące skądinąd – z core’a WordPressa, z custom fields, z ustawień witryny, z WooCommerce. W praktyce klikasz w widżecie ikonę „Dynamic Tags” (symbol dysków) obok pola, wybierasz źródło i konfigurujesz prefiks, sufiks oraz fallback w ustawieniach klucza.
Dynamic content lets you take content from somewhere on your WordPress site and automatically insert it into your Elementor designs.
Elementor — What Is Dynamic Content in Elementor Pro?
Funkcja jest dostępna wyłącznie w Elementor Pro – darmowa wersja Elementora nie udostępnia Dynamic Tags ani Theme Buildera. Nie zbudujesz w niej szablonu Single dla CPT, który automatycznie zaciąga dane z pól ACF.
Na czym polega natywna integracja Elementora z ACF 5+ i ACF PRO 6.8.x?
Elementor wykrywa pola ACF automatycznie, gdy tylko Field Group jest przypisana do typu treści, który aktualnie edytujesz w podglądzie. Nie trzeba rejestrować pól osobno po stronie Elementora. Nie ma osobnego connectora. Nie ma synchronizacji. Pole wpisane w ACF pojawia się jako pozycja „ACF Field” w Dynamic Tags i czeka, aż wybierzesz jego klucz.
Elementor integrates natively with ACF right out of the box. When you add custom fields to your site, Elementor automatically detects them and makes them available in your designs without any extra setup.
Advanced Custom Fields — Guide to Elementor and ACF Integration for WordPress
Wspierane są wersje ACF 5+, ale realnie pracujesz na linii ACF 6.x. Najnowsze stabilne wydanie to ACF 6.8.1 z 13 maja 2026 roku. Wtyczka według WP.org chodzi na ponad 2 milionach witryn – to standard branżowy, a nie niszowe narzędzie.
Co dokładnie znaczy, że „nie musisz pisać PHP” — i gdzie ta obietnica ma granice?
Bez PHP zrobisz wszystko, co opiera się na pojedynczych polach: tekst, obraz, URL, gallery, oembed, date_picker, color_picker, plus relacje (post_object, page_link, taxonomy). Pokrywa to 80–90 procent typowych potrzeb stron biznesowych. Granica zaczyna się tam, gdzie pole jest „kontenerem” – repeater, group, flexible content. Tych Elementor natywnie nie czyta, więc albo użyjesz dodatku, albo napiszesz shortcode w PHP i wstrzykniesz go jako Dynamic Tag „Shortcode”.
To nie jest jeszcze jeden tutorial typu „kliknij tu, kliknij tam”. To acf elementor tutorial z jawną mapą granic – żebyś wiedział, kiedy obietnica „bez PHP” się sprawdza, a kiedy trzeba sięgnąć po wtyczkę-most albo zaakceptować, że jeden konkretny widok wymaga snippetu.
Jakie wymagania środowiska musisz spełnić, zanim zaczniesz budować szablon?
Zanim wejdziesz do Theme Buildera, sprawdź trzy rzeczy: wersję WordPressa, wersję PHP i limit pamięci. Niedobór któregokolwiek z nich objawi się błędem 500, brakiem widoczności pól w Dynamic Tags albo zawieszającym się edytorem na większych stronach.
Jakie wersje WordPressa, PHP i pamięci są minimum, a jakie są zalecane w 2026?
Elementor oficjalnie wymaga WordPressa 6.5+ i PHP 7.4+. W praktyce społeczność testuje go na PHP 8.4–8.5 bez problemów wydajnościowych. ACF od wersji 6.3 wymaga WordPressa 6.0+ i PHP 7.4+. Limit pamięci – minimum 256 MB, ale na cięższych witrynach (wiele wtyczek, duże katalogi CPT) trzymaj 512 MB.
| Komponent | Minimum | Rekomendowane | Uwagi |
|---|---|---|---|
| WordPress | 6.5 | najnowsza stabilna | wymóg oficjalny Elementor |
| PHP | 7.4 | 8.4 lub 8.5 | 8.x daje lepszą wydajność i przyszłą kompatybilność |
| WP_MEMORY_LIMIT | 256 MB | 512 MB | dla WooCommerce i dużych CPT zawsze 512 MB |
| Elementor Pro | aktualna stabilna | aktualna stabilna | dynamic content tylko w Pro |
| ACF / ACF PRO | 5.0 | 6.8.x | 6.8.1 to wydanie z 13 maja 2026 |
Czy potrzebujesz ACF PRO, czy wystarczy darmowy ACF z WP.org?
Do podstawowego dynamicznego szablonu wystarczy darmowy ACF z WP.org – pola tekstowe, obrazy, URL, select, true_false, gallery (od wersji 6.0 gallery jest w wersji free). ACF PRO dokłada repeater, flexible content, clone, ACF Blocks i – co najważniejsze dla globalnych danych – Options Pages. Planujesz dynamiczny header i footer z numerem telefonu, adresem i CTA wspólnymi dla całej witryny? ACF PRO ci się opłaci.
Jak sprawdzić i podbić limit pamięci PHP w hostingu pod Elementor i ACF?
Aktualny limit pamięci sprawdzisz w panelu WordPress – przejdź do „Narzędzia > Stan witryny > Informacje > Serwer”. Jeśli wartość jest niższa niż 256 MB, podbij ją wpisem w wp-config.php:
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );Wpis dodaj nad linią z komentarzem /* That's all, stop editing! */. Po zapisaniu otwórz dowolną podstronę admina – jeśli nie ma błędu 500, limit działa. Wartość się nie zmienia mimo wpisu? Ograniczenie pochodzi z poziomu hostingu (php.ini) – skontaktuj się z supportem albo zmień wartość w panelu hostingowym.
Jak ułożyć strukturę danych w ACF, żeby szablon był naprawdę edytowalny z panelu?
Struktura danych to podstawa. Źle nazwiesz pola, źle przypiszesz Field Group do CPT, wrzucisz wszystko do jednej grupy bez logicznego podziału – i za pół roku spędzisz godziny, szukając właściwego klucza w długiej liście Dynamic Tags. Ten acf elementor tutorial zaczyna od ACF, nie od Elementora – bo bez sensownej struktury żaden builder ci nie pomoże.
Jak zarejestrować Custom Post Type bezpośrednio w panelu ACF 6.x (bez wtyczek pomocniczych)?
Od ACF 6.1 nie potrzebujesz osobnej wtyczki typu Custom Post Type UI. Wszystko zrobisz w panelu ACF: „ACF > Post Types > Add New”. Wpisz nazwę w liczbie pojedynczej i mnogiej („Property”, „Properties”), ustaw slug (np. property), włącz „Show in REST”, jeśli planujesz korzystać z REST API, włącz „Has archive”, jeśli chcesz archiwum (np. /properties/), wybierz ikonę dashicon. Zapisz – CPT jest gotowy.
Pro tip: Slug CPT nazywaj zawsze w liczbie pojedynczej małymi literami (
property, nieProperties). Slug trafia bezpośrednio do URL, do nazwy szablonu (single-property.php) i do warunków w Display Conditions Elementora – spójna konwencja oszczędzi ci później kilkudziesięciu drobnych poprawek.
Jak zbudować Field Group i poprawnie ustawić Location Rules dla CPT?
Przejdź do „ACF > Field Groups > Add New”. Nadaj grupie nazwę (np. „Property Details”), dodaj pola jednym kliknięciem na zielony przycisk „Add Field”. Dla CPT „Property” potrzebujesz: address (Text), bedrooms (Number), bathrooms (Number), size (Number), price (Number lub Text), gallery (Gallery), map_location (Google Map – jeśli używasz ACF PRO).
Najważniejsza sekcja Field Group to „Location Rules” na dole. Ustaw warunek: Post Type is equal to Property. Bez tego pole nie pojawi się w panelu edycji wpisu, a tym samym nie wyświetli się na liście Dynamic Tags Elementora. To pierwsza i najczęstsza przyczyna problemu „pole ACF nie pojawia się”.
Jak wykorzystać ACF Options Pages do danych globalnych (telefon, CTA, stopka)?
Options Pages dostajesz z ACF PRO. Trzymasz w nich dane wspólne dla całej witryny – numer telefonu, adres, treść CTA w stopce, link do regulaminu, treść baneru cookie. Zdefiniujesz je raz, a będą dostępne w każdym szablonie Theme Buildera (Header, Footer, Single, Archive). Edytujesz w jednym miejscu, zmiana wchodzi wszędzie.
W ACF 6.x rejestrujesz Options Page w panelu: „ACF > Options Pages > Add New”. Nazywasz ją „Site Settings”, przypisujesz Field Group do tej Options Page (Location Rules: Options Page is equal to Site Settings) i wypełniasz dane. W Elementorze pojawią się jako standardowe ACF Field – wybierzesz je w Dynamic Tags identycznie jak pola CPT.
Jakie dobre praktyki nazewnictwa pól ułatwią późniejszą pracę w Dynamic Tags?
- małe litery i podkreślenia w nazwie (Field Name):
property_price, niePropertyPriceaniproperty price– spacja w nazwie nie zadziała, - prefiks dla danego CPT:
property_price,property_bedrooms,property_gallery– gdy w przyszłości dodasz CPT „Agent” z polemprice(np. cena prowizji), unikniesz kolizji nazw w bazie, - pole Label po polsku, Field Name po angielsku: Label „Cena” widzi redaktor w panelu, Field Name
property_pricetrafia do bazy i kodu – bez polskich znaków i spacji, - grupuj pola tematycznie w jednym Field Group (parametry, media, kontakt) – łatwiej redaktorowi i łatwiej tobie szukać klucza w Dynamic Tags.
Jak krok po kroku zbudować Single Template w Elementor Theme Builderze?
Theme Builder Elementor Pro spina wszystko w jednym miejscu. Masz już CPT i pola. Teraz projektujesz layout, podpinasz Preview Settings i ustawiasz, dla których wpisów szablon ma się włączyć. Bez tych trzech kroków szablon będzie istniał, ale na froncie nigdy się nie pokaże.
Jak utworzyć nowy szablon Single dla CPT i nadać mu nazwę?
Przejdź do „Templates > Theme Builder” w menu WordPressa, kliknij „Single Post” w lewej kolumnie, potem zielony przycisk „Add New”. W modalu wybierz typ „Single Post” (Elementor dla CPT zaproponuje też nazwy zarejestrowanych typów – np. „Property”), nadaj szablonowi opisową nazwę („Single Property Template”) i kliknij „Create Template”. Elementor pokaże bibliotekę gotowych szablonów – wybierz „Blank”, jeśli budujesz od zera.
Jak ustawić Preview Settings, żeby widzieć dane testowego wpisu już w edytorze?
Bez Preview Settings edytor pokaże ci puste widżety z napisem „Heading” zamiast realnego tytułu – bo nie wie, jaki wpis ma podstawić. W dolnym pasku edytora kliknij ikonę koła zębatego („Page Settings”) i przejdź do sekcji „Preview Settings”. W „Preview Dynamic Content as” wybierz „Property” (lub inny twój CPT), w „Search & Select” wpisz tytuł testowego wpisu i kliknij „Apply & Preview”.
Od tego momentu wszystkie Dynamic Tags w szablonie ciągną dane z tego konkretnego wpisu. Możesz w dowolnej chwili przełączyć podgląd na inny wpis – to bezcenne przy testowaniu, czy szablon wygląda ładnie i dla wpisu z trzema zdjęciami w galerii, i dla tego z trzydziestoma.
Jak rozplanować layout (hero + sekcja parametrów + galeria) pod dynamiczną treść?
Typowy szablon Single dla CPT „Property” składa się z trzech sekcji:
- hero (pełna szerokość) – Featured Image jako tło, na nim widżet Heading z Post Title i Heading H3 z adresem (ACF Field
address); - parametry (2 kolumny) – lewa kolumna z Icon List, każda pozycja podpięta dynamicznie do pól
bedrooms,bathrooms,size; prawa kolumna z widżetem Heading dla ceny (Before „Cena: “, After „ PLN”, źródłoprice) i widżetem Button „Umów oglądanie” z dynamicznym linkiem; - galeria (pełna szerokość) – widżet Gallery lub Slider z dynamicznym źródłem podpiętym do pola ACF
gallery.
Jak ustawić Display Conditions tak, by szablon obejmował cały CPT?
Bez Display Conditions szablon zostanie zapisany, ale na froncie nadal pokaże się domyślny szablon motywu. Po skończeniu projektowania kliknij strzałkę obok zielonego „Publish” i wybierz „Display Conditions”. W modalu kliknij „Add Condition”, wybierz „Include” i z drugiego selecta wybierz „All Properties” (Elementor automatycznie wykrywa zarejestrowane CPT). Kliknij „Save & Close” – od tego momentu każdy wpis w CPT „Property” wyświetla się przez ten szablon.
Jak podpinać pola ACF przez Dynamic Tags, żeby nic nie zostało wpisane „na sztywno”?
Tu zaczyna się prawdziwa robota – sekcja, w której rozumiesz, jak używać acf z elementor w praktyce. Każde pole, każdy obraz, każdy link w szablonie musi mieć źródło w Dynamic Tags. Wpiszesz cokolwiek „palcami” – przy następnym wpisie zobaczysz tę samą wartość. Szablon przestaje wtedy być dynamiczny.
Jak otworzyć Dynamic Tags w widżecie i wybrać źródło „ACF Field”?
Każde pole w panelu widżetu, które wspiera dynamic content, ma obok małą ikonę dysków („Dynamic Tags”). Kliknij ją – rozwinie się menu z kategoriami źródeł: Post, Site, Archive, Media, Author, WooCommerce, ACF. Wybierz „ACF Field”. Pojawi się rozwijana lista z polami przypisanymi do bieżącego typu treści (wcześniej ustawionego w Preview Settings) – wskaż właściwy klucz.
Jak skonfigurować Before, After i Fallback dla pól tekstowych (np. ceny)?
Po wybraniu ACF Field i klucza pojawi się ikona klucza francuskiego („wrench”) obok nazwy źródła. Kliknij – rozwinie się zakładka „Advanced” z trzema polami:
- Before – tekst, który pojawi się przed wartością pola; dla ceny wpisz „Cena: ” (ze spacją na końcu),
- After – tekst po wartości; dla ceny wpisz „ PLN” (ze spacją na początku),
- Fallback – tekst pokazywany, gdy pole jest puste; dla ceny wpisz „Cena na zapytanie” – szablon nie pokaże samego „Cena: PLN” bez wartości w środku.
Fallback to najczęściej pomijana opcja, a ratuje layout w sytuacji, gdy redaktor doda nowy wpis i zapomni wypełnić jedno z pól. Bez fallbacku widzisz puste miejsce albo samą etykietę „Cena:” bez wartości. Z fallbackiem masz zawsze sensowny tekst.
Jak podpinać pola obrazów i galerii do widżetów Image / Gallery / Slider?
Pole ACF typu Image podpinasz w widżecie Image – w polu „Choose Image” kliknij ikonę Dynamic Tags, wybierz ACF Field, wskaż klucz (np. property_main_photo). Elementor automatycznie pobierze pełnowymiarowy obraz albo miniaturę, w zależności od ustawienia „Image Size” w widżecie.
Pole typu Gallery podpinasz w widżecie Gallery (Basic albo Pro): w polu „Image Gallery” kliknij Dynamic Tags, wybierz ACF Field, wskaż klucz pola gallery. Identycznie podepniesz galerię do widżetu Slider w Elementor Pro – redaktor zarządza wtedy slajdami przez panel ACF, bez wchodzenia do buildera.
Using Advanced Custom Fields (ACF) with Elementor provides an easy method for constructing dynamic image sliders. Create an ACF gallery field within your post type, then use a slider widget and dynamically populate it using the ACF gallery field.
CopyElement — Elementor Dynamic Content: Advanced Uses & Examples
Jak ustawić dynamiczny link (Button, Heading) na polu typu URL / Link / Page Link?
W widżecie Button znajdziesz pole „Link” (z ikoną kółka zębatego po prawej). Kliknij ikonę Dynamic Tags przy tym polu – w menu pojawi się „ACF URL”, „ACF File”, „ACF Page Link”, „ACF Post Object”, „ACF Taxonomy”. Wybierz typ zgodny z polem, jakie zdefiniowałeś w ACF, i wskaż klucz. Identycznie podlinkujesz widżet Heading (opcja „Link” w zakładce Content) i Image (opcja „Link to”).
Częsty błąd: Próba podpięcia pola ACF typu
urldo widżetu Text Editor albo do treści Heading (zamiast do atrybutu Link). Pole URL działa wyłącznie jako źródło atrybutu Link – w widżetach, które ten atrybut mają (Button, Heading, Image, Icon Box). W innych miejscach lista Dynamic Tags w ogóle nie pokaże opcji „ACF URL”.
Jak mieszać dynamic tagi ACF z core’owymi (Post Title, Featured Image, Author, Date)?
Core’owe Dynamic Tags WordPressa znajdziesz w tym samym menu, w kategorii „Post” – Post Title, Post Excerpt, Post Content, Featured Image, Post Date, Post Author. Sięgaj po nie tam, gdzie ma to sens semantyczny: Post Title dla nazwy nieruchomości (zamiast osobnego pola ACF name), Featured Image dla głównego zdjęcia (zamiast osobnego pola main_photo), Post Date dla daty publikacji ogłoszenia.
Dane biznesowe – cena, metraż, liczba pokoi, parametry techniczne – trzymaj w ACF. Dane meta WordPressa (autor, data, tytuł) zostaw core’owi. Ten podział oszczędza ci duplikacji i ułatwia migrację, jeśli kiedyś przeniesiesz dane między systemami.
| Źródło danych | Przykład pola / tagu | Rekomendowane użycie | Ograniczenia |
|---|---|---|---|
| Post (core WP) | Post Title, Featured Image, Author | nazwa, główne zdjęcie, dane meta | jedno pole na wpis (np. tylko jeden Featured Image) |
| ACF Field | price, bedrooms, gallery | dane biznesowe i strukturalne | brak natywnego wsparcia repeater/group/flexible |
| Site (Elementor) | Site Title, Site Tagline, Site URL | nagłówek, stopka, dane globalne strony | tylko dane systemowe WordPressa |
| ACF Options Page | phone_number, footer_cta | dane globalne edytowalne przez redaktora | wymaga ACF PRO |
| WooCommerce | Product Price, SKU, Stock | szablony produktów w sklepie | tylko dla CPT product |
Które typy pól ACF są wspierane natywnie, a które wymagają obejść?
To najczęściej zadawane pytanie i jednocześnie miejsce, w którym polskie tutoriale mijają się z rzeczywistością. Pełna lista oficjalnie wspieranych typów pól siedzi w dokumentacji Elementora. Poniżej zebrana w jednym miejscu, z konkretną wskazówką, jaki widżet pasuje do jakiego pola.
Jakie pola tekstowe i mediowe Elementor obsługuje od ręki (oficjalna lista)?
| Typ pola ACF | Obsługiwany natywnie? | Sugerowany widżet | Uwagi / obejścia |
|---|---|---|---|
| text | tak | Heading, Text Editor | standardowo, używa Before/After/Fallback |
| textarea | tak | Text Editor | respektuje znaki nowej linii |
| number | tak | Heading, Icon List | świetne do parametrów (metraż, liczba pokoi) |
| tak | Button (link), Heading | działa jako mailto: w atrybucie Link | |
| wysiwyg | tak | Text Editor | zachowuje formatowanie z edytora WP |
| select / checkbox / radio | tak | Heading, Icon List | zwraca wybraną wartość jako tekst |
| true_false | tak | warunek w Display Conditions | 1 lub 0 jako wynik |
| oembed | tak | Video | obsługuje YouTube, Vimeo automatycznie |
| google_map | tak | Google Maps (Pro) | wymaga ACF PRO |
| date_picker / time_picker | tak | Heading | format konfigurowany w ustawieniach pola ACF |
| color_picker | tak | kontekstowo (background, kolor tekstu) | zwraca kod hex |
| image | tak | Image | respektuje Image Size widżetu |
| gallery | tak | Gallery, Slider | edycja slajdów przez ACF zamiast buildera |
| url | tak | Button, Heading, Image (atrybut Link) | nie działa w polach treści, tylko w linkach |
| page_link / post_object / relationship | tak | Button, Heading (atrybut Link) | zwraca URL powiązanego wpisu |
| taxonomy | tak | Heading, Button (link) | zwraca termin taksonomii lub URL archiwum |
| file | tak | Button (atrybut Link) | do pobrania PDF, dokumentów |
| repeater | nie | — | wymaga Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater |
| group | nie | — | shortcode w PHP lub dodatek |
| flexible content | nie | — | shortcode w PHP lub dodatek |
Dlaczego repeater, group i flexible content nie działają natywnie w Dynamic Tags?
Te trzy typy pól nie zwracają jednej wartości, tylko zestaw wartości w pętli. Elementor Dynamic Tags działa w modelu „jedno źródło – jedno pole” – wybierasz klucz, dostajesz wartość. Repeater zwraca tablicę wierszy, każdy z kilkoma podpolami. To wymaga renderingu w pętli, czego natywny Dynamic Tag nie potrafi.
Any ACF fields not included in this list, such as repeater fields, are not supported at this time.
Elementor — Elementor Integration With ACF (sekcja „Custom ACF fields we support”)
Jak obejść brak wsparcia repeatera bez PHP — przez Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater?
Problem repeatera bez kodu rozwiązują dwa dodatki:
- Dynamic Content for Elementor od dynamic.ooo – komercyjna wtyczka z setkami widżetów; obejmuje repeater, group, flexible content, ACF Maps, ACF Posts Loop; bogata funkcjonalność, krzywa uczenia stromsza, ale rozwiązuje problem repeatera całościowo,
- Dynamic Elementor ACF Repeater z WP.org – darmowa wtyczka skupiona wąsko na jednej rzeczy: most między repeaterem ACF a Elementor Loop Grid / Loop Items; potrzebujesz wyłącznie repeatera? to lżejsze rozwiązanie.
Po instalacji dodatku w widżecie Loop Grid (albo innym właściwym dla danego pluginu) w polu „Source” pojawi się opcja „ACF Repeater” – wybierasz pole repeater i konfigurujesz Loop Item z podpięciem do podpól. Konfiguracja jest klikalna, bez PHP.
Kiedy realnie sięgnąć po JetEngine zamiast obejść ACF + Elementor?
JetEngine od Crocoblock to konkurencyjna kombinacja: własne pola, własne listingi, własne dynamic templates – wszystko zintegrowane z Elementorem w jednym ekosystemie. Sięgaj po niego, gdy:
- budujesz katalog albo dyrektorię z zaawansowanym filtrowaniem (AJAX, multi-select, range slider),
- potrzebujesz Query Builder z customowymi zapytaniami do bazy (np. „posty z metawartością X większą niż Y”),
- twoje pola będą głównie repeaterami i relacjami między CPT – JetEngine ma to natywnie,
- chcesz mieć wszystko w jednym ekosystemie, bez żonglowania między ACF, Elementor Pro i dodatkami repeatera.
Dla typowego biznesowego CPT (ogłoszenia, portfolio, oferty) z prostymi polami ACF + Elementor Pro nadal wygrywają. Są tańsze, lepiej udokumentowane, mają większą społeczność. JetEngine wybierasz wtedy, gdy zaczynają się ograniczenia natywnej integracji.
Jakie pułapki i konflikty najczęściej psują dynamiczny szablon — i jak je naprawić?
Lista typowych problemów jest krótka, ale ich diagnoza ciągnie się godzinami, jeśli nie wiesz, gdzie szukać. Poniżej najczęstsze pułapki w kolejności od najczęstszej do najbardziej egzotycznej.
Dlaczego pole ACF nie pojawia się na liście Dynamic Tags i jak to naprawić?
| Co widzisz | Co to znaczy | Co zrobić |
|---|---|---|
| Lista ACF Field jest pusta | żaden Field Group nie ma Location Rule dla bieżącego CPT | ACF > Field Groups > edycja grupy > Location Rules > Post Type is equal to [twój CPT] |
| Pole jest na liście, ale wartość jest pusta | w testowym wpisie pole jest niewypełnione | otwórz wpis ustawiony w Preview Settings i wpisz wartość w pole |
| Pole repeater / group / flexible nie ma się na liście | typ pola nie jest wspierany natywnie | zainstaluj Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater |
| Pole istnieje, ale Elementor go nie pokazuje mimo dobrej Location Rule | cache panelu admin lub Preview Settings wskazuje na inny CPT | wyczyść cache Elementora (Elementor > Tools > Regenerate Files & Data) i sprawdź Preview Settings |
Co zrobić, gdy pole URL nie działa jako dynamiczny link?
Pole ACF typu URL jest projektowane wyłącznie do atrybutu Link widżetu. Próbujesz je wstawić jako treść widżetu Heading albo Text Editor? Lista Dynamic Tags w ogóle nie pokaże tej opcji. Rozwiązanie: zmień widżet na taki, który ma atrybut Link (Button, Heading z opcją linkowania, Icon Box, Image z opcją „Link to”) i tam podepnij pole URL. Drugi wariant: zamiast pola URL użyj pola Text – wtedy wartość trafi do treści widżetu, ale nie będzie klikalnym linkiem.
Jak diagnozować konflikty po aktualizacji Elementor Pro (np. z ACF Pro Extended)?
Po każdej dużej aktualizacji Elementor Pro albo ACF zdarza się, że dynamic tags przestają zwracać wartości, choć pola są poprawnie wypełnione. Zacznij od trybu „Safe Mode” w Elementorze: „Elementor > Tools > Safe Mode > Enable”. Tryb wyłącza wszystkie wtyczki poza Elementorem i ACF. Problem znika? Winowajcą jest któraś z pozostałych wtyczek.
Najczęstsi sprawcy konfliktów: ACF Pro Extended, ACF Extended, ACF Frontend Form, a po stronie cache – LiteSpeed Cache, WP Rocket i Cloudflare z agresywnym cache HTML. Wyłączaj po kolei, sprawdzaj po każdym wyłączeniu.
Jak postępować, gdy WPML + Dynamic Conditions + ACF się rozjeżdżają?
WPML w połączeniu z Dynamic Conditions Elementora i polami ACF bywa wrażliwy – wielojęzyczne kopie wpisów potrafią gubić powiązania metadanych. Zacznij od testu kontrolnego: wyłącz WPML, sprawdź, czy szablon i warunki działają na czystym WordPressie. Działają? Problem siedzi po stronie WPML i wymaga konfiguracji „Custom Field Translation Preferences” w WPML String Translation. Każde pole ACF, którego używasz w Dynamic Conditions, musi być ustawione na „Copy” albo „Translate”, nigdy „Don’t translate”.
Jak ogarnąć caching, żeby świeże dane ACF były widoczne na froncie?
Cache to typowy ostatni podejrzany – edytujesz pole w panelu, zapisujesz, otwierasz front i widzisz stary tekst. Sprawdź po kolei: cache przeglądarki (Ctrl+F5 albo tryb incognito), cache wtyczki (WP Rocket / LiteSpeed Cache – przycisk „Clear Cache”), cache serwera (panel hostingu), cache CDN (Cloudflare – „Purge Everything”). Używasz Cloudflare z agresywnym cache HTML? Ustaw page rule wykluczającą URL szablonu Single z cache albo zmień strategię cache na „Cache Everything” z TTL nie dłuższym niż 1 godzina.
Po wyczyszczeniu wszystkich warstw sprawdź nagłówki HTTP odpowiedzi:
curl -I https://twojadomena.pl/property/przykladowy-wpis/Szukaj nagłówków CF-Cache-Status (Cloudflare), X-Cache (cache serwera) i X-LiteSpeed-Cache (LiteSpeed). Wartość HIT oznacza odpowiedź z cache – wtedy świeże dane ACF nie dotrą. Wartość MISS albo DYNAMIC oznacza świeżą odpowiedź z serwera.
Jak wygląda kompletny scenariusz wdrożenia na przykładzie CPT „Property”?
Czas zebrać wszystko w jedno spójne wdrożenie. Poniższy scenariusz to acf elementor tutorial w pełnym kształcie – od rejestracji CPT, przez Field Group, po szablon Single z podpiętymi wszystkimi polami. Czas całkowity: od 45 minut do 2 godzin, w zależności od liczby pól i złożoności layoutu.
Jakie pola ACF zdefiniować dla CPT „Property” (adres, sypialnie, łazienki, metraż, cena, galeria)?
property_address– Text – adres nieruchomości,property_bedrooms– Number – liczba sypialni,property_bathrooms– Number – liczba łazienek,property_size– Number – metraż (m²),property_price– Number – cena w PLN,property_gallery– Gallery – zdjęcia nieruchomości,property_map– Google Map (ACF PRO) – lokalizacja na mapie,property_virtual_tour_url– URL – link do wirtualnego spaceru,property_status– Select (Na sprzedaż / Wynajem / Sprzedane) – status oferty.
Wszystkie 9 pól w jednym Field Group „Property Details” z Location Rule „Post Type is equal to Property”. Tytuł wpisu (Post Title) służy jako nazwa nieruchomości – nie definiuj osobnego pola property_name.
Jak złożyć layout Single i podpiąć każde pole przez Dynamic Tags?
- sekcja Hero (full-width, wysokość 60vh): Section background podpięty do Featured Image (core), wewnątrz dwa widżety Heading – H1 z Post Title (core), H3 z
property_address(ACF Field, Fallback „Adres na zapytanie”); - sekcja Status + Cena (2 kolumny): lewa – widżet Heading H2 z
property_status(Before „Status: “); prawa – widżet Heading H2 zproperty_price(Before „Cena: “, After „ PLN”, Fallback „Cena na zapytanie”); - sekcja Parametry (3 kolumny, Icon Box w każdej): kolumna 1 – ikona łóżka + Heading H3 z
property_bedrooms+ tekst „sypialnie”; kolumna 2 – ikona prysznica +property_bathrooms+ „łazienek”; kolumna 3 – ikona linijki +property_size+ „m²”; - sekcja Galeria (full-width): widżet Gallery z dynamicznym źródłem
property_gallery, kolumny 3, lightbox włączony; - sekcja Mapa (full-width): widżet Google Maps z dynamicznym źródłem
property_map, wysokość 400px; - sekcja CTA (1 kolumna, centrowana): widżet Button „Wirtualny spacer” z dynamicznym linkiem do
property_virtual_tour_url, drugi Button „Umów oglądanie” z linkiem do podstrony kontaktu (statyczny – nie zmienia się między wpisami).
Jak przetestować szablon i co sprawdzić przed publikacją?
Test w 60 sekund – zanim opublikujesz szablon dla wszystkich wpisów:
- krok 1 (15 sek): utwórz w panelu drugi testowy wpis CPT „Property” z innym zestawem danych (krótszy adres, mniejsza galeria, brak ceny – celowo, żeby przetestować fallback);
- krok 2 (15 sek): w Preview Settings przełącz podgląd na drugi wpis – sprawdź, czy layout się nie rozjeżdża i czy fallback dla ceny się pokazał;
- krok 3 (15 sek): otwórz front w trybie incognito (Ctrl+Shift+N) – bez cache przeglądarki sprawdzasz realny wygląd dla użytkownika;
- krok 4 (15 sek): kliknij wszystkie linki (Button CTA, Heading z linkiem, Image z linkiem) – upewnij się, że żaden nie prowadzi do
#aniabout:blank.
Wszystkie 4 kroki przeszły? Szablon jest gotowy do publikacji. Display Conditions („All Properties”) wciągną pod ten szablon wszystkie istniejące i przyszłe wpisy CPT.
Jakie jest podsumowanie kluczowych informacji?
Dynamiczny szablon WordPress w duecie ACF i Elementor Pro buduje się w jednym, powtarzalnym schemacie: zarejestruj CPT w ACF, utwórz Field Group z Location Rule do tego CPT, w Theme Builderze utwórz Single Template, ustaw Preview Settings, podepnij pola przez Dynamic Tags, ustaw Display Conditions. Bez PHP zrobisz wszystko poza repeaterem, group i flexible content – te trzy typy wymagają dodatku (Dynamic Content for Elementor albo Dynamic Elementor ACF Repeater) albo shortcode’a w PHP.
Końcowa checklista przed publikacją:
- środowisko spełnia minimum (WP 6.5+, PHP 7.4+, RAM 256 MB+),
- Field Group ma poprawne Location Rule do twojego CPT,
- każdy widżet w szablonie ma źródło w Dynamic Tags – żadnego tekstu „na sztywno”,
- każde opcjonalne pole ma ustawiony Fallback,
- Display Conditions wskazują „All [twój CPT]”.
Kiedy ACF + Elementor wystarczą? Przy typowych CPT biznesowych (oferty, portfolio, katalog produktów, nieruchomości, oferty pracy) z prostymi polami. Kiedy sięgnij po dodatek? Gdy musisz wyświetlić repeater albo flexible content bez kodu. Kiedy przeskoczyć na JetEngine? Gdy budujesz złożony katalog z AJAX-owym filtrowaniem, customowymi query do bazy, albo potrzebujesz wszystkiego w jednym ekosystemie bez żonglowania wtyczkami.
Jakie są najczęściej zadawane pytania (FAQ)?
Czy potrzebuję Elementor Pro, żeby używać Dynamic Tags z ACF?
Tak, bezwzględnie. Dynamic Tags, Theme Builder i Display Conditions to funkcje wyłącznie Elementor Pro – darmowa wersja Elementora nie udostępnia ani ikony Dynamic Tags w widżetach, ani Theme Buildera, w którym budujesz szablony Single. Bez Pro nie zbudujesz dynamicznego szablonu opartego o ACF, niezależnie od tego, jak skonfigurujesz ACF.
Dlaczego moje pole ACF nie pojawia się w liście Dynamic Tags w Elementor Pro?
Trzy najczęstsze przyczyny: Field Group nie ma Location Rule pasującej do bieżącego typu treści (sprawdź „ACF > Field Groups > edycja grupy > Location Rules”), wpis testowy w Preview Settings nie ma wypełnionej wartości w tym polu, albo pole jest typu repeater / group / flexible content – te nie mają natywnego wsparcia i wymagają dodatku.
Jak wyświetlić repeater ACF w Elementorze bez pisania PHP?
Bez kodu masz dwa wyjścia: zainstaluj darmową wtyczkę Dynamic Elementor ACF Repeater z WP.org – udostępnia widżety Loop dla repeatera – albo komercyjną Dynamic Content for Elementor od dynamic.ooo, która obejmuje repeater, group, flexible content i wiele innych typów pól. Pierwsza opcja jest węższa i darmowa, druga – szersza i płatna.
Czy ACF + Elementor działa poprawnie z WPML i wielojęzycznością?
Działa, ale wymaga starannej konfiguracji. W WPML String Translation ustaw dla każdego pola ACF używanego w szablonie tryb „Copy” albo „Translate” – nigdy „Don’t translate”. Dynamic Conditions oparte o pola ACF bywają wrażliwe na wielojęzyczność. Zacznij testowanie od wyłączenia WPML i potwierdź, czy szablon działa bez niego, zanim zaczniesz diagnozować konfigurację WPML.
Jaka wersja PHP jest najlepsza dla Elementor Pro + ACF w 2026 roku?
PHP 8.4 albo 8.5. Minimum oficjalnie wymagane przez Elementora to 7.4, ale 8.x daje zauważalną przewagę wydajnościową i lepszą kompatybilność z przyszłymi aktualizacjami. Testy społeczności potwierdzają, że Elementor Pro działa stabilnie na PHP 8.5 – jeśli hosting na to pozwala, ustaw najwyższą dostępną wersję 8.x.
Czy mogę zbudować w 100% dynamiczny header i footer z polami ACF Options Pages?
Tak – to klasyczny scenariusz dla ACF Options Pages (wymaga ACF PRO). Zarejestruj Options Page „Site Settings” w ACF, dodaj Field Group z polami globalnymi (numer telefonu, adres, treść CTA stopki, link do regulaminu) i przypisz Location Rule do tej Options Page. W Theme Builderze utwórz Header i Footer, podpinaj widżety do tych pól tak samo jak do pól CPT – w Dynamic Tags pojawią się jako ACF Field. Edytujesz dane w jednym miejscu, zmiany widać wszędzie.
