{"id":113124,"date":"2026-05-19T20:05:25","date_gmt":"2026-05-19T18:05:25","guid":{"rendered":"https:\/\/allkeystore.pl\/?p=113124"},"modified":"2026-06-14T13:49:03","modified_gmt":"2026-06-14T11:49:03","slug":"acf-i-elementor-jak-zbudowac-w-100-dynamiczny-szablon-wordpress-bez-pisania-php","status":"publish","type":"post","link":"https:\/\/allkeystore.pl\/de\/acf-i-elementor-jak-zbudowac-w-100-dynamiczny-szablon-wordpress-bez-pisania-php\/","title":{"rendered":"ACF und Elementor: So erstellen Sie ein dynamisches WordPress-Template in 100% ohne PHP-Kenntnisse"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Czas czytania:<\/strong> ~14 min \u00b7 <strong>Poziom:<\/strong> \u015brednio zaawansowany<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Czy da si\u0119 zbudowa\u0107 w pe\u0142ni dynamiczny szablon Single w Elementorze i ACF bez ani jednej linijki PHP? Tak \u2013 pod warunkiem, \u017ce trzymasz si\u0119 natywnej integracji Elementor Pro z Advanced Custom Fields i akceptujesz kilka jawnych ogranicze\u0144. G\u0142\u00f3wnie repeater i flexible content. Dynamiczny szablon WordPress oparty o ACF i Elementor Pro spina cztery elementy: Custom Post Type jako typ tre\u015bci, Field Group jako kontener p\u00f3l, Theme Builder jako miejsce projektowania layoutu, Dynamic Tags jako pomost mi\u0119dzy polem a wid\u017cetem. Ten artyku\u0142 prowadzi ci\u0119 od wymaga\u0144 \u015brodowiska, przez struktur\u0119 danych w ACF, po kompletny szablon Single dla CPT \u201eProperty&#8221; \u2013 z podpi\u0119ciem ka\u017cdej etykiety, ceny i zdj\u0119cia przez Dynamic Tag. Po drodze poka\u017c\u0119, kiedy obietnica \u201ebez PHP&#8221; si\u0119 sprawdza, kiedy musisz si\u0119gn\u0105\u0107 po dodatek i kiedy lepiej w og\u00f3le przeskoczy\u0107 na JetEngine.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Elementor Pro ma natywn\u0105 integracj\u0119 z ACF 5+ \u2013 wi\u0119kszo\u015b\u0107 typ\u00f3w p\u00f3l (tekst, obraz, URL, gallery, oembed, color_picker, date_picker) podepniesz przez Dynamic Tags bez kodu.<\/li>\n\n\n\n<li>Repeater, group i flexible content nie maj\u0105 natywnego wsparcia \u2013 potrzebujesz dodatku Dynamic Content for Elementor albo Dynamic Elementor ACF Repeater.<\/li>\n\n\n\n<li>Minimum \u015brodowiska: WordPress 6.5+, PHP 7.4+ (rekomendowane 8.4\u20138.5), 256 MB pami\u0119ci (512 MB dla wi\u0119kszych witryn), Elementor Pro w aktualnej wersji, ACF 6.8.x.<\/li>\n\n\n\n<li>Trzon ka\u017cdego dynamicznego szablonu Single: CPT + Field Group z Location Rules + Single Template w Theme Builderze + Preview Settings + Display Conditions.<\/li>\n\n\n\n<li>Najcz\u0119stsze pu\u0142apki: pole nie pojawia si\u0119 w li\u015bcie Dynamic Tags (z\u0142a lokalizacja Field Group, puste dane), URL nie dzia\u0142a jako link (z\u0142y wid\u017cet), konflikty po aktualizacji Elementor Pro, problemy z WPML, cache zas\u0142aniaj\u0105cy \u015bwie\u017ce dane.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"co-tak-naprawde-znaczy-100-dynamiczny-szablon-wordpress\">Co tak naprawd\u0119 znaczy \u201e100% dynamiczny szablon WordPress&#8221; w duecie ACF i Elementor?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W skr\u00f3cie: ka\u017cda widoczna tre\u015b\u0107 w szablonie \u2013 tytu\u0142, opis, zdj\u0119cia, cena, telefon, CTA, link do mapy \u2013 pochodzi z bazy danych, a nie z r\u0119cznie wpisanego pola w builderze. Layout projektujesz raz. Dane podpinasz przez Dynamic Tags, kt\u00f3re ci\u0105gn\u0105 warto\u015bci z core&#8217;owych p\u00f3l WordPressa (Post Title, Featured Image, Author) i z p\u00f3l ACF (cena, metra\u017c, galeria). Dodanie nowego wpisu w CPT sprowadza si\u0119 wtedy do wype\u0142nienia p\u00f3l w panelu \u2013 szablon zajmuje si\u0119 reszt\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czym jest dynamic content w Elementor Pro i czemu wymaga wersji Pro?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dynamic content to mechanizm, kt\u00f3rym Elementor wstrzykuje do wid\u017cet\u00f3w dane pochodz\u0105ce sk\u0105din\u0105d \u2013 z core&#8217;a WordPressa, z custom fields, z ustawie\u0144 witryny, z WooCommerce. W praktyce klikasz w wid\u017cecie ikon\u0119 \u201eDynamic Tags&#8221; (symbol dysk\u00f3w) obok pola, wybierasz \u017ar\u00f3d\u0142o i konfigurujesz prefiks, sufiks oraz fallback w ustawieniach klucza.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Dynamic content lets you take content from somewhere on your WordPress site and automatically insert it into your Elementor designs.<\/p>\n<cite><a href=\"https:\/\/elementor.com\/blog\/dynamic-content-elementor\/\" rel=\"nofollow noopener\" target=\"_blank\">Elementor \u2014 What Is Dynamic Content in Elementor Pro?<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcja jest dost\u0119pna wy\u0142\u0105cznie w <a href=\"https:\/\/allkeystore.pl\/produkt\/pakiet-elementor-pro-8-wtyczek-premium\/\">Elementor Pro<\/a> \u2013 darmowa wersja Elementora nie udost\u0119pnia Dynamic Tags ani Theme Buildera. Nie zbudujesz w niej szablonu Single dla CPT, kt\u00f3ry automatycznie zaci\u0105ga dane z p\u00f3l ACF.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Na czym polega natywna integracja Elementora z ACF 5+ i ACF PRO 6.8.x?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Elementor wykrywa pola ACF automatycznie, gdy tylko Field Group jest przypisana do typu tre\u015bci, kt\u00f3ry aktualnie edytujesz w podgl\u0105dzie. Nie trzeba rejestrowa\u0107 p\u00f3l osobno po stronie Elementora. Nie ma osobnego connectora. Nie ma synchronizacji. Pole wpisane w ACF pojawia si\u0119 jako pozycja \u201eACF Field&#8221; w Dynamic Tags i czeka, a\u017c wybierzesz jego klucz.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">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.<\/p>\n<cite><a href=\"https:\/\/www.advancedcustomfields.com\/blog\/elementor-acf\/\" rel=\"nofollow noopener\" target=\"_blank\">Advanced Custom Fields \u2014 Guide to Elementor and ACF Integration for WordPress<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Wspierane s\u0105 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\u0142ug WP.org chodzi na ponad 2 milionach witryn \u2013 to standard bran\u017cowy, a nie niszowe narz\u0119dzie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Co dok\u0142adnie znaczy, \u017ce \u201enie musisz pisa\u0107 PHP&#8221; \u2014 i gdzie ta obietnica ma granice?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bez PHP zrobisz wszystko, co opiera si\u0119 na pojedynczych polach: tekst, obraz, URL, gallery, oembed, date_picker, color_picker, plus relacje (post_object, page_link, taxonomy). Pokrywa to 80\u201390 procent typowych potrzeb stron biznesowych. Granica zaczyna si\u0119 tam, gdzie pole jest \u201ekontenerem&#8221; \u2013 repeater, group, flexible content. Tych Elementor natywnie nie czyta, wi\u0119c albo u\u017cyjesz dodatku, albo napiszesz shortcode w PHP i wstrzykniesz go jako Dynamic Tag \u201eShortcode&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To nie jest jeszcze jeden tutorial typu \u201ekliknij tu, kliknij tam&#8221;. To <em>acf elementor tutorial<\/em> z jawn\u0105 map\u0105 granic \u2013 \u017ceby\u015b wiedzia\u0142, kiedy obietnica \u201ebez PHP&#8221; si\u0119 sprawdza, a kiedy trzeba si\u0119gn\u0105\u0107 po wtyczk\u0119-most albo zaakceptowa\u0107, \u017ce jeden konkretny widok wymaga snippetu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jakie-wymagania-srodowiska-musisz-spelnic-zanim-zaczniesz\">Jakie wymagania \u015brodowiska musisz spe\u0142ni\u0107, zanim zaczniesz budowa\u0107 szablon?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zanim wejdziesz do Theme Buildera, sprawd\u017a trzy rzeczy: wersj\u0119 WordPressa, wersj\u0119 PHP i limit pami\u0119ci. Niedob\u00f3r kt\u00f3regokolwiek z nich objawi si\u0119 b\u0142\u0119dem 500, brakiem widoczno\u015bci p\u00f3l w Dynamic Tags albo zawieszaj\u0105cym si\u0119 edytorem na wi\u0119kszych stronach.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie wersje WordPressa, PHP i pami\u0119ci s\u0105 minimum, a jakie s\u0105 zalecane w 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Elementor oficjalnie wymaga WordPressa 6.5+ i PHP 7.4+. W praktyce spo\u0142eczno\u015b\u0107 testuje go na PHP 8.4\u20138.5 bez problem\u00f3w wydajno\u015bciowych. ACF od wersji 6.3 wymaga WordPressa 6.0+ i PHP 7.4+. Limit pami\u0119ci \u2013 minimum 256 MB, ale na ci\u0119\u017cszych witrynach (wiele wtyczek, du\u017ce katalogi CPT) trzymaj 512 MB.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Komponent<\/th><th>Minimum<\/th><th>Rekomendowane<\/th><th>Uwagi<\/th><\/tr><\/thead><tbody><tr><td>WordPress<\/td><td>6.5<\/td><td>najnowsza stabilna<\/td><td>wym\u00f3g oficjalny Elementor<\/td><\/tr><tr><td>PHP<\/td><td>7.4<\/td><td>8.4 lub 8.5<\/td><td>8.x daje lepsz\u0105 wydajno\u015b\u0107 i przysz\u0142\u0105 kompatybilno\u015b\u0107<\/td><\/tr><tr><td>WP_MEMORY_LIMIT<\/td><td>256 MB<\/td><td>512 MB<\/td><td>dla WooCommerce i du\u017cych CPT zawsze 512 MB<\/td><\/tr><tr><td>Elementor Pro<\/td><td>aktualna stabilna<\/td><td>aktualna stabilna<\/td><td>dynamic content tylko w Pro<\/td><\/tr><tr><td>ACF \/ ACF PRO<\/td><td>5.0<\/td><td>6.8.x<\/td><td>6.8.1 to wydanie z 13 maja 2026<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Czy potrzebujesz ACF PRO, czy wystarczy darmowy ACF z WP.org?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Do podstawowego dynamicznego szablonu wystarczy darmowy ACF z WP.org \u2013 pola tekstowe, obrazy, URL, select, true_false, gallery (od wersji 6.0 gallery jest w wersji free). <a href=\"https:\/\/allkeystore.pl\/produkt\/wtyczka-advanced-custom-fields-afc-pro\/\">ACF PRO<\/a> dok\u0142ada repeater, flexible content, clone, ACF Blocks i \u2013 co najwa\u017cniejsze dla globalnych danych \u2013 Options Pages. Planujesz dynamiczny header i footer z numerem telefonu, adresem i CTA wsp\u00f3lnymi dla ca\u0142ej witryny? ACF PRO ci si\u0119 op\u0142aci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak sprawdzi\u0107 i podbi\u0107 limit pami\u0119ci PHP w hostingu pod Elementor i ACF?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aktualny limit pami\u0119ci sprawdzisz w panelu WordPress \u2013 przejd\u017a do \u201eNarz\u0119dzia &gt; Stan witryny &gt; Informacje &gt; Serwer&#8221;. Je\u015bli warto\u015b\u0107 jest ni\u017csza ni\u017c 256 MB, podbij j\u0105 wpisem w <code>wp-config.php<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>define( 'WP_MEMORY_LIMIT', '512M' );\ndefine( 'WP_MAX_MEMORY_LIMIT', '512M' );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wpis dodaj nad lini\u0105 z komentarzem <code>\/* That's all, stop editing! *\/<\/code>. Po zapisaniu otw\u00f3rz dowoln\u0105 podstron\u0119 admina \u2013 je\u015bli nie ma b\u0142\u0119du 500, limit dzia\u0142a. Warto\u015b\u0107 si\u0119 nie zmienia mimo wpisu? Ograniczenie pochodzi z poziomu hostingu (<code>php.ini<\/code>) \u2013 skontaktuj si\u0119 z supportem albo zmie\u0144 warto\u015b\u0107 w panelu hostingowym.<\/p>\n\n\n\n<div style=\"max-width:700px; margin:2em auto; text-align:center;\">\n<svg viewBox=\"0 0 700 720\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-labelledby=\"title-warstwy-srodowiska\" style=\"max-width:100%; height:auto;\">\n  <title id=\"title-warstwy-srodowiska\">Pi\u0119\u0107 warstw \u015brodowiska potrzebnych do dzia\u0142ania dynamicznego szablonu ACF i Elementor<\/title>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\"\n            markerWidth=\"8\" markerHeight=\"8\" orient=\"auto-start-reverse\">\n      <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"currentColor\" fill-opacity=\"0.5\"\/>\n    <\/marker>\n  <\/defs>\n\n  <style>\n    .st-block { fill: #f3f5f7; stroke: currentColor; stroke-opacity: 0.2; stroke-width: 1; }\n    .st-block-accent { fill: #009434; }\n    .st-num { fill: #009434; font-family: 'Roboto Slab', serif; font-size: 22px; font-weight: 700; }\n    .st-num-on-accent { fill: #ffffff; font-family: 'Roboto Slab', serif; font-size: 22px; font-weight: 700; }\n    .st-label { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 15px; font-weight: 600; }\n    .st-label-on-accent { fill: #ffffff; font-family: 'Roboto', sans-serif; font-size: 15px; font-weight: 600; }\n    .st-desc { fill: currentColor; opacity: 0.7; font-family: 'Roboto', sans-serif; font-size: 12px; }\n    .st-desc-on-accent { fill: #ffffff; opacity: 0.9; font-family: 'Roboto', sans-serif; font-size: 12px; }\n    .st-arrow { stroke: currentColor; stroke-opacity: 0.5; stroke-width: 1.5; fill: none; }\n    .st-side-label { fill: currentColor; opacity: 0.7; font-family: 'Roboto', sans-serif; font-size: 11px; font-style: italic; }\n    html[data-neve-theme=\"dark\"] .st-block { fill: #2b2b2b; }\n  <\/style>\n\n  <!-- Strza\u0142ki najpierw (warstwa pod blokami). Bloki: y=20, y=160, y=300, y=440, y=580 \u2014 ka\u017cdy wysoko\u015b\u0107 90. Odst\u0119py 50px. -->\n  <line class=\"st-arrow\" x1=\"350\" y1=\"120\" x2=\"350\" y2=\"150\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"st-arrow\" x1=\"350\" y1=\"260\" x2=\"350\" y2=\"290\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"st-arrow\" x1=\"350\" y1=\"400\" x2=\"350\" y2=\"430\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"st-arrow\" x1=\"350\" y1=\"540\" x2=\"350\" y2=\"570\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- Boczna etykieta \u201ezale\u017cno\u015b\u0107 wersji\" \u2014 pionowa, po prawej stronie -->\n  <text class=\"st-side-label\" x=\"680\" y=\"360\" text-anchor=\"middle\" transform=\"rotate(90 680 360)\">zale\u017cno\u015b\u0107 wersji<\/text>\n\n  <!-- Bloki (warstwa 5 to akcent \u2014 Tw\u00f3j szablon Single) -->\n  <rect class=\"st-block\" x=\"50\" y=\"20\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"st-block\" x=\"50\" y=\"160\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"st-block\" x=\"50\" y=\"300\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"st-block\" x=\"50\" y=\"440\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"st-block st-block-accent\" x=\"50\" y=\"580\" width=\"600\" height=\"90\" rx=\"4\"\/>\n\n  <!-- Teksty: warstwa 1 -->\n  <text class=\"st-num\" x=\"80\" y=\"60\">1<\/text>\n  <text class=\"st-label\" x=\"120\" y=\"55\">Hosting \/ serwer<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"78\">PHP 8.4+ (minimum 7.4)<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"95\">Limit pami\u0119ci 512 MB rekomendowany<\/text>\n\n  <!-- Warstwa 2 -->\n  <text class=\"st-num\" x=\"80\" y=\"200\">2<\/text>\n  <text class=\"st-label\" x=\"120\" y=\"195\">WordPress 6.5+<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"218\">Core CMS \u2014 wym\u00f3g oficjalny Elementor Pro<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"235\">Rekomendowana najnowsza stabilna wersja<\/text>\n\n  <!-- Warstwa 3 -->\n  <text class=\"st-num\" x=\"80\" y=\"340\">3<\/text>\n  <text class=\"st-label\" x=\"120\" y=\"335\">Elementor Pro<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"358\">Theme Builder, Dynamic Tags, Display Conditions<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"375\">Pro wymagane \u2014 darmowa wersja nie ma Dynamic Tags<\/text>\n\n  <!-- Warstwa 4 -->\n  <text class=\"st-num\" x=\"80\" y=\"480\">4<\/text>\n  <text class=\"st-label\" x=\"120\" y=\"475\">ACF \/ ACF PRO 6.8.x<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"498\">Field Groups, Custom Post Types, Options Pages<\/text>\n  <text class=\"st-desc\" x=\"120\" y=\"515\">ACF PRO dodaje repeater, flexible content, Options<\/text>\n\n  <!-- Warstwa 5 (akcent) -->\n  <text class=\"st-num-on-accent\" x=\"80\" y=\"620\">5<\/text>\n  <text class=\"st-label-on-accent\" x=\"120\" y=\"615\">Tw\u00f3j szablon Single<\/text>\n  <text class=\"st-desc-on-accent\" x=\"120\" y=\"638\">Single Template z podpi\u0119tymi polami przez Dynamic Tags<\/text>\n  <text class=\"st-desc-on-accent\" x=\"120\" y=\"655\">Display Conditions: All [tw\u00f3j CPT]<\/text>\n<\/svg>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-ulozyc-strukture-danych-w-acf-zeby-szablon-byl-naprawde\">Jak u\u0142o\u017cy\u0107 struktur\u0119 danych w ACF, \u017ceby szablon by\u0142 naprawd\u0119 edytowalny z panelu?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Struktura danych to podstawa. \u0179le nazwiesz pola, \u017ale przypiszesz Field Group do CPT, wrzucisz wszystko do jednej grupy bez logicznego podzia\u0142u \u2013 i za p\u00f3\u0142 roku sp\u0119dzisz godziny, szukaj\u0105c w\u0142a\u015bciwego klucza w d\u0142ugiej li\u015bcie Dynamic Tags. Ten <em>acf elementor tutorial<\/em> zaczyna od ACF, nie od Elementora \u2013 bo bez sensownej struktury \u017caden builder ci nie pomo\u017ce.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak zarejestrowa\u0107 Custom Post Type bezpo\u015brednio w panelu ACF 6.x (bez wtyczek pomocniczych)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Od ACF 6.1 nie potrzebujesz osobnej wtyczki typu <a href=\"https:\/\/allkeystore.pl\/produkt\/custom-post-type-ui-extended-wordpress-plugin\/\">Custom Post Type UI<\/a>. Wszystko zrobisz w panelu ACF: \u201eACF &gt; Post Types &gt; Add New&#8221;. Wpisz nazw\u0119 w liczbie pojedynczej i mnogiej (\u201eProperty&#8221;, \u201eProperties&#8221;), ustaw slug (np. <code>property<\/code>), w\u0142\u0105cz \u201eShow in REST&#8221;, je\u015bli planujesz korzysta\u0107 z REST API, w\u0142\u0105cz \u201eHas archive&#8221;, je\u015bli chcesz archiwum (np. <code>\/properties\/<\/code>), wybierz ikon\u0119 dashicon. Zapisz \u2013 CPT jest gotowy.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Pro tip:<\/strong> Slug CPT nazywaj zawsze w liczbie pojedynczej ma\u0142ymi literami (<code>property<\/code>, nie <code>Properties<\/code>). Slug trafia bezpo\u015brednio do URL, do nazwy szablonu (<code>single-property.php<\/code>) i do warunk\u00f3w w Display Conditions Elementora \u2013 sp\u00f3jna konwencja oszcz\u0119dzi ci p\u00f3\u017aniej kilkudziesi\u0119ciu drobnych poprawek.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Jak zbudowa\u0107 Field Group i poprawnie ustawi\u0107 Location Rules dla CPT?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przejd\u017a do \u201eACF &gt; Field Groups &gt; Add New&#8221;. Nadaj grupie nazw\u0119 (np. \u201eProperty Details&#8221;), dodaj pola jednym klikni\u0119ciem na zielony przycisk \u201eAdd Field&#8221;. Dla CPT \u201eProperty&#8221; potrzebujesz: <code>address<\/code> (Text), <code>bedrooms<\/code> (Number), <code>bathrooms<\/code> (Number), <code>size<\/code> (Number), <code>price<\/code> (Number lub Text), <code>gallery<\/code> (Gallery), <code>map_location<\/code> (Google Map \u2013 je\u015bli u\u017cywasz ACF PRO).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsza sekcja Field Group to \u201eLocation Rules&#8221; na dole. Ustaw warunek: <strong>Post Type<\/strong> <strong>is equal to<\/strong> <strong>Property<\/strong>. Bez tego pole nie pojawi si\u0119 w panelu edycji wpisu, a tym samym nie wy\u015bwietli si\u0119 na li\u015bcie Dynamic Tags Elementora. To pierwsza i najcz\u0119stsza przyczyna problemu \u201epole ACF nie pojawia si\u0119&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak wykorzysta\u0107 ACF Options Pages do danych globalnych (telefon, CTA, stopka)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Options Pages dostajesz z ACF PRO. Trzymasz w nich dane wsp\u00f3lne dla ca\u0142ej witryny \u2013 numer telefonu, adres, tre\u015b\u0107 CTA w stopce, link do regulaminu, tre\u015b\u0107 baneru cookie. Zdefiniujesz je raz, a b\u0119d\u0105 dost\u0119pne w ka\u017cdym szablonie Theme Buildera (Header, Footer, Single, Archive). Edytujesz w jednym miejscu, zmiana wchodzi wsz\u0119dzie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W ACF 6.x rejestrujesz Options Page w panelu: \u201eACF &gt; Options Pages &gt; Add New&#8221;. Nazywasz j\u0105 \u201eSite Settings&#8221;, przypisujesz Field Group do tej Options Page (Location Rules: <strong>Options Page<\/strong> <strong>is equal to<\/strong> <strong>Site Settings<\/strong>) i wype\u0142niasz dane. W Elementorze pojawi\u0105 si\u0119 jako standardowe ACF Field \u2013 wybierzesz je w Dynamic Tags identycznie jak pola CPT.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie dobre praktyki nazewnictwa p\u00f3l u\u0142atwi\u0105 p\u00f3\u017aniejsz\u0105 prac\u0119 w Dynamic Tags?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ma\u0142e litery i podkre\u015blenia<\/strong> w nazwie (Field Name): <code>property_price<\/code>, nie <code>PropertyPrice<\/code> ani <code>property price<\/code> \u2013 spacja w nazwie nie zadzia\u0142a,<\/li>\n\n\n\n<li><strong>prefiks dla danego CPT<\/strong>: <code>property_price<\/code>, <code>property_bedrooms<\/code>, <code>property_gallery<\/code> \u2013 gdy w przysz\u0142o\u015bci dodasz CPT \u201eAgent&#8221; z polem <code>price<\/code> (np. cena prowizji), unikniesz kolizji nazw w bazie,<\/li>\n\n\n\n<li><strong>pole Label po polsku, Field Name po angielsku<\/strong>: Label \u201eCena&#8221; widzi redaktor w panelu, Field Name <code>property_price<\/code> trafia do bazy i kodu \u2013 bez polskich znak\u00f3w i spacji,<\/li>\n\n\n\n<li><strong>grupuj pola tematycznie<\/strong> w jednym Field Group (parametry, media, kontakt) \u2013 \u0142atwiej redaktorowi i \u0142atwiej tobie szuka\u0107 klucza w Dynamic Tags.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-krok-po-kroku-zbudowac-single-template-w-elementor-theme\">Jak krok po kroku zbudowa\u0107 Single Template w Elementor Theme Builderze?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Theme Builder Elementor Pro spina wszystko w jednym miejscu. Masz ju\u017c CPT i pola. Teraz projektujesz layout, podpinasz Preview Settings i ustawiasz, dla kt\u00f3rych wpis\u00f3w szablon ma si\u0119 w\u0142\u0105czy\u0107. Bez tych trzech krok\u00f3w szablon b\u0119dzie istnia\u0142, ale na froncie nigdy si\u0119 nie poka\u017ce.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak utworzy\u0107 nowy szablon Single dla CPT i nada\u0107 mu nazw\u0119?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przejd\u017a do \u201eTemplates &gt; Theme Builder&#8221; w menu WordPressa, kliknij \u201eSingle Post&#8221; w lewej kolumnie, potem zielony przycisk \u201eAdd New&#8221;. W modalu wybierz typ \u201eSingle Post&#8221; (Elementor dla CPT zaproponuje te\u017c nazwy zarejestrowanych typ\u00f3w \u2013 np. \u201eProperty&#8221;), nadaj szablonowi opisow\u0105 nazw\u0119 (\u201eSingle Property Template&#8221;) i kliknij \u201eCreate Template&#8221;. Elementor poka\u017ce bibliotek\u0119 gotowych szablon\u00f3w \u2013 wybierz \u201eBlank&#8221;, je\u015bli budujesz od zera.<\/p>\n\n\n\n<div style=\"max-width:800px; margin:2em auto; text-align:center;\">\n<svg viewBox=\"0 0 800 160\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-labelledby=\"title-breadcrumb-theme-builder\" style=\"max-width:100%; height:auto;\">\n  <title id=\"title-breadcrumb-theme-builder\">\u015acie\u017cka tworzenia Single Template w panelu WordPress: Templates, Theme Builder, Single Post, Add New, Single Property Template<\/title>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\"\n            markerWidth=\"8\" markerHeight=\"8\" orient=\"auto-start-reverse\">\n      <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"currentColor\" fill-opacity=\"0.5\"\/>\n    <\/marker>\n  <\/defs>\n\n  <style>\n    .bc-block { fill: #f3f5f7; stroke: currentColor; stroke-opacity: 0.2; stroke-width: 1; }\n    .bc-block-active { fill: #009434; }\n    .bc-text { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 12px; font-weight: 500; }\n    .bc-text-active { fill: #ffffff; font-family: 'Roboto', sans-serif; font-size: 12px; font-weight: 600; }\n    .bc-arrow { stroke: currentColor; stroke-opacity: 0.5; stroke-width: 1.5; fill: none; }\n    html[data-neve-theme=\"dark\"] .bc-block { fill: #2b2b2b; }\n  <\/style>\n\n  <!-- Strza\u0142ki najpierw \u2014 pomi\u0119dzy 5 kafelkami. Bloki o szeroko\u015bci 140, odst\u0119p ~15px po obu stronach strza\u0142ki. -->\n  <!-- Kafelki: x=10..150, x=165..305 (... etc., 5 kafelk\u00f3w o szer. 140, odst\u0119p 15+25+15=55) -->\n  <!-- Recalibruj\u0119: 5 kafelk\u00f3w o szer. 140, x: 10, 168, 326, 484, 642. Odst\u0119p 18px mi\u0119dzy praw\u0105 jednego a lew\u0105 nast\u0119pnego. Strza\u0142ka d\u0142ugo\u015b\u0107 ~30px. -->\n  <!-- Wybieram bloki: x=10, x=168, x=326, x=484, x=642 (szer. 140) \u2014 odst\u0119p poziomy 18px. Za ma\u0142o. -->\n  <!-- Powtarzam: szer. 130, x=10, x=170, x=330, x=490, x=650 \u2014 odst\u0119p 30px. Strza\u0142ka d\u0142ugo\u015b\u0107 ~30px. -->\n  <line class=\"bc-arrow\" x1=\"150\" y1=\"85\" x2=\"195\" y2=\"85\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"bc-arrow\" x1=\"310\" y1=\"85\" x2=\"355\" y2=\"85\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"bc-arrow\" x1=\"470\" y1=\"85\" x2=\"515\" y2=\"85\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"bc-arrow\" x1=\"630\" y1=\"85\" x2=\"675\" y2=\"85\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- Bloki: 5 kafelk\u00f3w -->\n  <rect class=\"bc-block\" x=\"10\" y=\"60\" width=\"140\" height=\"50\" rx=\"4\"\/>\n  <rect class=\"bc-block\" x=\"200\" y=\"60\" width=\"140\" height=\"50\" rx=\"4\"\/>\n  <rect class=\"bc-block\" x=\"360\" y=\"60\" width=\"140\" height=\"50\" rx=\"4\"\/>\n  <rect class=\"bc-block\" x=\"520\" y=\"60\" width=\"140\" height=\"50\" rx=\"4\"\/>\n  <rect class=\"bc-block bc-block-active\" x=\"680\" y=\"60\" width=\"110\" height=\"50\" rx=\"4\"\/>\n\n  <!-- Teksty na ko\u0144cu -->\n  <text class=\"bc-text\" x=\"80\" y=\"90\" text-anchor=\"middle\">Templates<\/text>\n  <text class=\"bc-text\" x=\"270\" y=\"90\" text-anchor=\"middle\">Theme Builder<\/text>\n  <text class=\"bc-text\" x=\"430\" y=\"90\" text-anchor=\"middle\">Single Post<\/text>\n  <text class=\"bc-text\" x=\"590\" y=\"90\" text-anchor=\"middle\">Add New<\/text>\n  <text class=\"bc-text-active\" x=\"735\" y=\"84\" text-anchor=\"middle\">Single Property<\/text>\n  <text class=\"bc-text-active\" x=\"735\" y=\"100\" text-anchor=\"middle\">Template<\/text>\n<\/svg>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Jak ustawi\u0107 Preview Settings, \u017ceby widzie\u0107 dane testowego wpisu ju\u017c w edytorze?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bez Preview Settings edytor poka\u017ce ci puste wid\u017cety z napisem \u201eHeading&#8221; zamiast realnego tytu\u0142u \u2013 bo nie wie, jaki wpis ma podstawi\u0107. W dolnym pasku edytora kliknij ikon\u0119 ko\u0142a z\u0119batego (\u201ePage Settings&#8221;) i przejd\u017a do sekcji \u201ePreview Settings&#8221;. W \u201ePreview Dynamic Content as&#8221; wybierz \u201eProperty&#8221; (lub inny tw\u00f3j CPT), w \u201eSearch &amp; Select&#8221; wpisz tytu\u0142 testowego wpisu i kliknij \u201eApply &amp; Preview&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Od tego momentu wszystkie Dynamic Tags w szablonie ci\u0105gn\u0105 dane z tego konkretnego wpisu. Mo\u017cesz w dowolnej chwili prze\u0142\u0105czy\u0107 podgl\u0105d na inny wpis \u2013 to bezcenne przy testowaniu, czy szablon wygl\u0105da \u0142adnie i dla wpisu z trzema zdj\u0119ciami w galerii, i dla tego z trzydziestoma.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak rozplanowa\u0107 layout (hero + sekcja parametr\u00f3w + galeria) pod dynamiczn\u0105 tre\u015b\u0107?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typowy szablon Single dla CPT \u201eProperty&#8221; sk\u0142ada si\u0119 z trzech sekcji:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>hero (pe\u0142na szeroko\u015b\u0107)<\/strong> \u2013 Featured Image jako t\u0142o, na nim wid\u017cet Heading z Post Title i Heading H3 z adresem (ACF Field <code>address<\/code>);<\/li>\n\n\n\n<li><strong>parametry (2 kolumny)<\/strong> \u2013 lewa kolumna z Icon List, ka\u017cda pozycja podpi\u0119ta dynamicznie do p\u00f3l <code>bedrooms<\/code>, <code>bathrooms<\/code>, <code>size<\/code>; prawa kolumna z wid\u017cetem Heading dla ceny (Before \u201eCena: &#8222;, After \u201e PLN&#8221;, \u017ar\u00f3d\u0142o <code>price<\/code>) i wid\u017cetem Button \u201eUm\u00f3w ogl\u0105danie&#8221; z dynamicznym linkiem;<\/li>\n\n\n\n<li><strong>galeria (pe\u0142na szeroko\u015b\u0107)<\/strong> \u2013 wid\u017cet Gallery lub Slider z dynamicznym \u017ar\u00f3d\u0142em podpi\u0119tym do pola ACF <code>gallery<\/code>.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Jak ustawi\u0107 Display Conditions tak, by szablon obejmowa\u0142 ca\u0142y CPT?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bez Display Conditions szablon zostanie zapisany, ale na froncie nadal poka\u017ce si\u0119 domy\u015blny szablon motywu. Po sko\u0144czeniu projektowania kliknij strza\u0142k\u0119 obok zielonego \u201ePublish&#8221; i wybierz \u201eDisplay Conditions&#8221;. W modalu kliknij \u201eAdd Condition&#8221;, wybierz \u201eInclude&#8221; i z drugiego selecta wybierz \u201eAll Properties&#8221; (Elementor automatycznie wykrywa zarejestrowane CPT). Kliknij \u201eSave &amp; Close&#8221; \u2013 od tego momentu ka\u017cdy wpis w CPT \u201eProperty&#8221; wy\u015bwietla si\u0119 przez ten szablon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-podpinac-pola-acf-przez-dynamic-tags-zeby-nic-nie\">Jak podpina\u0107 pola ACF przez Dynamic Tags, \u017ceby nic nie zosta\u0142o wpisane \u201ena sztywno&#8221;?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tu zaczyna si\u0119 prawdziwa robota \u2013 sekcja, w kt\u00f3rej rozumiesz, <em>jak u\u017cywa\u0107 acf z elementor<\/em> w praktyce. Ka\u017cde pole, ka\u017cdy obraz, ka\u017cdy link w szablonie musi mie\u0107 \u017ar\u00f3d\u0142o w Dynamic Tags. Wpiszesz cokolwiek \u201epalcami&#8221; \u2013 przy nast\u0119pnym wpisie zobaczysz t\u0119 sam\u0105 warto\u015b\u0107. Szablon przestaje wtedy by\u0107 dynamiczny.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak otworzy\u0107 Dynamic Tags w wid\u017cecie i wybra\u0107 \u017ar\u00f3d\u0142o \u201eACF Field&#8221;?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cde pole w panelu wid\u017cetu, kt\u00f3re wspiera dynamic content, ma obok ma\u0142\u0105 ikon\u0119 dysk\u00f3w (\u201eDynamic Tags&#8221;). Kliknij j\u0105 \u2013 rozwinie si\u0119 menu z kategoriami \u017ar\u00f3de\u0142: Post, Site, Archive, Media, Author, WooCommerce, ACF. Wybierz \u201eACF Field&#8221;. Pojawi si\u0119 rozwijana lista z polami przypisanymi do bie\u017c\u0105cego typu tre\u015bci (wcze\u015bniej ustawionego w Preview Settings) \u2013 wska\u017c w\u0142a\u015bciwy klucz.<\/p>\n\n\n\n<div style=\"max-width:700px; margin:2em auto; text-align:center;\">\n<svg viewBox=\"0 0 700 870\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-labelledby=\"title-flow-podpinania-pola\" style=\"max-width:100%; height:auto;\">\n  <title id=\"title-flow-podpinania-pola\">Sze\u015b\u0107 krok\u00f3w podpinania pola ACF do wid\u017cetu Heading w Elementor Pro<\/title>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\"\n            markerWidth=\"8\" markerHeight=\"8\" orient=\"auto-start-reverse\">\n      <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"currentColor\" fill-opacity=\"0.5\"\/>\n    <\/marker>\n  <\/defs>\n\n  <style>\n    .fl-block { fill: #f3f5f7; stroke: currentColor; stroke-opacity: 0.2; stroke-width: 1; }\n    .fl-block-final { fill: #009434; }\n    .fl-num { fill: #009434; font-family: 'Roboto Slab', serif; font-size: 20px; font-weight: 700; }\n    .fl-num-on-accent { fill: #ffffff; font-family: 'Roboto Slab', serif; font-size: 20px; font-weight: 700; }\n    .fl-label { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 14px; font-weight: 600; }\n    .fl-label-on-accent { fill: #ffffff; font-family: 'Roboto', sans-serif; font-size: 14px; font-weight: 600; }\n    .fl-desc { fill: currentColor; opacity: 0.7; font-family: 'Roboto', sans-serif; font-size: 11px; }\n    .fl-desc-on-accent { fill: #ffffff; opacity: 0.9; font-family: 'Roboto', sans-serif; font-size: 11px; }\n    .fl-arrow { stroke: currentColor; stroke-opacity: 0.5; stroke-width: 1.5; fill: none; }\n    html[data-neve-theme=\"dark\"] .fl-block { fill: #2b2b2b; }\n  <\/style>\n\n  <!-- 6 blok\u00f3w pionowo, ka\u017cdy wysoko\u015b\u0107 90, odst\u0119p 50px (linia 30 + marker 10 + 10px margines z ka\u017cdej strony). y: 20, 160, 300, 440, 580, 720. -->\n  <!-- Strza\u0142ki najpierw \u2014 z marginesami 10px od obu box\u00f3w (konwencja linear flow) -->\n  <line class=\"fl-arrow\" x1=\"350\" y1=\"120\" x2=\"350\" y2=\"150\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"fl-arrow\" x1=\"350\" y1=\"260\" x2=\"350\" y2=\"290\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"fl-arrow\" x1=\"350\" y1=\"400\" x2=\"350\" y2=\"430\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"fl-arrow\" x1=\"350\" y1=\"540\" x2=\"350\" y2=\"570\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"fl-arrow\" x1=\"350\" y1=\"680\" x2=\"350\" y2=\"710\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- Bloki (ostatni krok \u2014 akcent) -->\n  <rect class=\"fl-block\" x=\"50\" y=\"20\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"fl-block\" x=\"50\" y=\"160\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"fl-block\" x=\"50\" y=\"300\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"fl-block\" x=\"50\" y=\"440\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"fl-block\" x=\"50\" y=\"580\" width=\"600\" height=\"90\" rx=\"4\"\/>\n  <rect class=\"fl-block fl-block-final\" x=\"50\" y=\"720\" width=\"600\" height=\"90\" rx=\"4\"\/>\n\n  <!-- Teksty -->\n  <!-- Krok 1 -->\n  <text class=\"fl-num\" x=\"80\" y=\"58\">1<\/text>\n  <text class=\"fl-label\" x=\"115\" y=\"55\">Page Settings<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"78\">Kliknij ikon\u0119 ko\u0142a z\u0119batego w dolnym pasku edytora Elementora<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"95\">\u2014 otworzy si\u0119 panel ustawie\u0144 strony \/ szablonu<\/text>\n\n  <!-- Krok 2 -->\n  <text class=\"fl-num\" x=\"80\" y=\"198\">2<\/text>\n  <text class=\"fl-label\" x=\"115\" y=\"195\">Preview Settings<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"218\">Wybierz \u201ePreview Dynamic Content as: Property&#8221;, wska\u017c wpis<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"235\">i kliknij \u201eApply &amp; Preview&#8221; \u2014 dane testowe wida\u0107 w edytorze<\/text>\n\n  <!-- Krok 3 -->\n  <text class=\"fl-num\" x=\"80\" y=\"338\">3<\/text>\n  <text class=\"fl-label\" x=\"115\" y=\"335\">Wyb\u00f3r wid\u017cetu Heading<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"358\">Przeci\u0105gnij wid\u017cet Heading z panelu na sekcj\u0119,<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"375\">w kt\u00f3rej ma si\u0119 pojawi\u0107 dynamiczna tre\u015b\u0107 (np. tytu\u0142, cena)<\/text>\n\n  <!-- Krok 4 -->\n  <text class=\"fl-num\" x=\"80\" y=\"478\">4<\/text>\n  <text class=\"fl-label\" x=\"115\" y=\"475\">Ikona Dynamic Tags przy polu Title<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"498\">Kliknij ma\u0142\u0105 ikon\u0119 dysk\u00f3w obok pola Title<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"515\">\u2014 rozwinie si\u0119 menu z kategoriami \u017ar\u00f3de\u0142 danych<\/text>\n\n  <!-- Krok 5 -->\n  <text class=\"fl-num\" x=\"80\" y=\"618\">5<\/text>\n  <text class=\"fl-label\" x=\"115\" y=\"615\">Wyb\u00f3r \u201eACF Field&#8221; z menu<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"638\">Z listy kategorii (Post, Site, Archive, ACF&#8230;)<\/text>\n  <text class=\"fl-desc\" x=\"115\" y=\"655\">wybierz \u201eACF Field&#8221; \u2014 poka\u017ce si\u0119 rozwijana lista p\u00f3l<\/text>\n\n  <!-- Krok 6 (akcent) -->\n  <text class=\"fl-num-on-accent\" x=\"80\" y=\"758\">6<\/text>\n  <text class=\"fl-label-on-accent\" x=\"115\" y=\"755\">Wyb\u00f3r klucza property_price + Before \/ After \/ Fallback<\/text>\n  <text class=\"fl-desc-on-accent\" x=\"115\" y=\"778\">Wska\u017c konkretny klucz pola (np. property_price), kliknij ikon\u0119<\/text>\n  <text class=\"fl-desc-on-accent\" x=\"115\" y=\"795\">klucza francuskiego i ustaw Before \u201eCena: &#8222;, After \u201e PLN&#8221;, Fallback<\/text>\n<\/svg>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Jak skonfigurowa\u0107 Before, After i Fallback dla p\u00f3l tekstowych (np. ceny)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Po wybraniu ACF Field i klucza pojawi si\u0119 ikona klucza francuskiego (\u201ewrench&#8221;) obok nazwy \u017ar\u00f3d\u0142a. Kliknij \u2013 rozwinie si\u0119 zak\u0142adka \u201eAdvanced&#8221; z trzema polami:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Before<\/strong> \u2013 tekst, kt\u00f3ry pojawi si\u0119 przed warto\u015bci\u0105 pola; dla ceny wpisz \u201eCena: &#8221; (ze spacj\u0105 na ko\u0144cu),<\/li>\n\n\n\n<li><strong>After<\/strong> \u2013 tekst po warto\u015bci; dla ceny wpisz \u201e PLN&#8221; (ze spacj\u0105 na pocz\u0105tku),<\/li>\n\n\n\n<li><strong>Fallback<\/strong> \u2013 tekst pokazywany, gdy pole jest puste; dla ceny wpisz \u201eCena na zapytanie&#8221; \u2013 szablon nie poka\u017ce samego \u201eCena: PLN&#8221; bez warto\u015bci w \u015brodku.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Fallback to najcz\u0119\u015bciej pomijana opcja, a ratuje layout w sytuacji, gdy redaktor doda nowy wpis i zapomni wype\u0142ni\u0107 jedno z p\u00f3l. Bez fallbacku widzisz puste miejsce albo sam\u0105 etykiet\u0119 \u201eCena:&#8221; bez warto\u015bci. Z fallbackiem masz zawsze sensowny tekst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak podpina\u0107 pola obraz\u00f3w i galerii do wid\u017cet\u00f3w Image \/ Gallery \/ Slider?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pole ACF typu Image podpinasz w wid\u017cecie Image \u2013 w polu \u201eChoose Image&#8221; kliknij ikon\u0119 Dynamic Tags, wybierz ACF Field, wska\u017c klucz (np. <code>property_main_photo<\/code>). Elementor automatycznie pobierze pe\u0142nowymiarowy obraz albo miniatur\u0119, w zale\u017cno\u015bci od ustawienia \u201eImage Size&#8221; w wid\u017cecie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pole typu Gallery podpinasz w wid\u017cecie Gallery (Basic albo Pro): w polu \u201eImage Gallery&#8221; kliknij Dynamic Tags, wybierz ACF Field, wska\u017c klucz pola gallery. Identycznie podepniesz galeri\u0119 do wid\u017cetu Slider w Elementor Pro \u2013 redaktor zarz\u0105dza wtedy slajdami przez panel ACF, bez wchodzenia do buildera.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">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.<\/p>\n<cite><a href=\"https:\/\/copyelement.com\/blog\/elementor-dynamic-content-advanced-uses-examples\" rel=\"nofollow noopener\" target=\"_blank\">CopyElement \u2014 Elementor Dynamic Content: Advanced Uses &amp; Examples<\/a><\/cite><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Jak ustawi\u0107 dynamiczny link (Button, Heading) na polu typu URL \/ Link \/ Page Link?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W wid\u017cecie Button znajdziesz pole \u201eLink&#8221; (z ikon\u0105 k\u00f3\u0142ka z\u0119batego po prawej). Kliknij ikon\u0119 Dynamic Tags przy tym polu \u2013 w menu pojawi si\u0119 \u201eACF URL&#8221;, \u201eACF File&#8221;, \u201eACF Page Link&#8221;, \u201eACF Post Object&#8221;, \u201eACF Taxonomy&#8221;. Wybierz typ zgodny z polem, jakie zdefiniowa\u0142e\u015b w ACF, i wska\u017c klucz. Identycznie podlinkujesz wid\u017cet Heading (opcja \u201eLink&#8221; w zak\u0142adce Content) i Image (opcja \u201eLink to&#8221;).<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Cz\u0119sty b\u0142\u0105d:<\/strong> Pr\u00f3ba podpi\u0119cia pola ACF typu <code>url<\/code> do wid\u017cetu Text Editor albo do tre\u015bci Heading (zamiast do atrybutu Link). Pole URL dzia\u0142a wy\u0142\u0105cznie jako \u017ar\u00f3d\u0142o atrybutu Link \u2013 w wid\u017cetach, kt\u00f3re ten atrybut maj\u0105 (Button, Heading, Image, Icon Box). W innych miejscach lista Dynamic Tags w og\u00f3le nie poka\u017ce opcji \u201eACF URL&#8221;.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Jak miesza\u0107 dynamic tagi ACF z core&#8217;owymi (Post Title, Featured Image, Author, Date)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Core&#8217;owe Dynamic Tags WordPressa znajdziesz w tym samym menu, w kategorii \u201ePost&#8221; \u2013 Post Title, Post Excerpt, Post Content, Featured Image, Post Date, Post Author. Si\u0119gaj po nie tam, gdzie ma to sens semantyczny: Post Title dla nazwy nieruchomo\u015bci (zamiast osobnego pola ACF <code>name<\/code>), Featured Image dla g\u0142\u00f3wnego zdj\u0119cia (zamiast osobnego pola <code>main_photo<\/code>), Post Date dla daty publikacji og\u0142oszenia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dane biznesowe \u2013 cena, metra\u017c, liczba pokoi, parametry techniczne \u2013 trzymaj w ACF. Dane meta WordPressa (autor, data, tytu\u0142) zostaw core&#8217;owi. Ten podzia\u0142 oszcz\u0119dza ci duplikacji i u\u0142atwia migracj\u0119, je\u015bli kiedy\u015b przeniesiesz dane mi\u0119dzy systemami.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u0179r\u00f3d\u0142o danych<\/th><th>Przyk\u0142ad pola \/ tagu<\/th><th>Rekomendowane u\u017cycie<\/th><th>Ograniczenia<\/th><\/tr><\/thead><tbody><tr><td>Post (core WP)<\/td><td>Post Title, Featured Image, Author<\/td><td>nazwa, g\u0142\u00f3wne zdj\u0119cie, dane meta<\/td><td>jedno pole na wpis (np. tylko jeden Featured Image)<\/td><\/tr><tr><td>ACF Field<\/td><td>price, bedrooms, gallery<\/td><td>dane biznesowe i strukturalne<\/td><td>brak natywnego wsparcia repeater\/group\/flexible<\/td><\/tr><tr><td>Site (Elementor)<\/td><td>Site Title, Site Tagline, Site URL<\/td><td>nag\u0142\u00f3wek, stopka, dane globalne strony<\/td><td>tylko dane systemowe WordPressa<\/td><\/tr><tr><td>ACF Options Page<\/td><td>phone_number, footer_cta<\/td><td>dane globalne edytowalne przez redaktora<\/td><td>wymaga ACF PRO<\/td><\/tr><tr><td>WooCommerce<\/td><td>Product Price, SKU, Stock<\/td><td>szablony produkt\u00f3w w sklepie<\/td><td>tylko dla CPT product<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ktore-typy-pol-acf-sa-wspierane-natywnie-a-ktore-wymagaja\">Kt\u00f3re typy p\u00f3l ACF s\u0105 wspierane natywnie, a kt\u00f3re wymagaj\u0105 obej\u015b\u0107?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To najcz\u0119\u015bciej zadawane pytanie i jednocze\u015bnie miejsce, w kt\u00f3rym polskie tutoriale mijaj\u0105 si\u0119 z rzeczywisto\u015bci\u0105. Pe\u0142na lista oficjalnie wspieranych typ\u00f3w p\u00f3l siedzi w dokumentacji Elementora. Poni\u017cej zebrana w jednym miejscu, z konkretn\u0105 wskaz\u00f3wk\u0105, jaki wid\u017cet pasuje do jakiego pola.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie pola tekstowe i mediowe Elementor obs\u0142uguje od r\u0119ki (oficjalna lista)?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Typ pola ACF<\/th><th>Obs\u0142ugiwany natywnie?<\/th><th>Sugerowany wid\u017cet<\/th><th>Uwagi \/ obej\u015bcia<\/th><\/tr><\/thead><tbody><tr><td>text<\/td><td>tak<\/td><td>Heading, Text Editor<\/td><td>standardowo, u\u017cywa Before\/After\/Fallback<\/td><\/tr><tr><td>textarea<\/td><td>tak<\/td><td>Text Editor<\/td><td>respektuje znaki nowej linii<\/td><\/tr><tr><td>number<\/td><td>tak<\/td><td>Heading, Icon List<\/td><td>\u015bwietne do parametr\u00f3w (metra\u017c, liczba pokoi)<\/td><\/tr><tr><td>email<\/td><td>tak<\/td><td>Button (link), Heading<\/td><td>dzia\u0142a jako mailto: w atrybucie Link<\/td><\/tr><tr><td>wysiwyg<\/td><td>tak<\/td><td>Text Editor<\/td><td>zachowuje formatowanie z edytora WP<\/td><\/tr><tr><td>select \/ checkbox \/ radio<\/td><td>tak<\/td><td>Heading, Icon List<\/td><td>zwraca wybran\u0105 warto\u015b\u0107 jako tekst<\/td><\/tr><tr><td>true_false<\/td><td>tak<\/td><td>warunek w Display Conditions<\/td><td>1 lub 0 jako wynik<\/td><\/tr><tr><td>oembed<\/td><td>tak<\/td><td>Video<\/td><td>obs\u0142uguje YouTube, Vimeo automatycznie<\/td><\/tr><tr><td>google_map<\/td><td>tak<\/td><td>Google Maps (Pro)<\/td><td>wymaga ACF PRO<\/td><\/tr><tr><td>date_picker \/ time_picker<\/td><td>tak<\/td><td>Heading<\/td><td>format konfigurowany w ustawieniach pola ACF<\/td><\/tr><tr><td>color_picker<\/td><td>tak<\/td><td>kontekstowo (background, kolor tekstu)<\/td><td>zwraca kod hex<\/td><\/tr><tr><td>image<\/td><td>tak<\/td><td>Image<\/td><td>respektuje Image Size wid\u017cetu<\/td><\/tr><tr><td>gallery<\/td><td>tak<\/td><td>Gallery, Slider<\/td><td>edycja slajd\u00f3w przez ACF zamiast buildera<\/td><\/tr><tr><td>url<\/td><td>tak<\/td><td>Button, Heading, Image (atrybut Link)<\/td><td>nie dzia\u0142a w polach tre\u015bci, tylko w linkach<\/td><\/tr><tr><td>page_link \/ post_object \/ relationship<\/td><td>tak<\/td><td>Button, Heading (atrybut Link)<\/td><td>zwraca URL powi\u0105zanego wpisu<\/td><\/tr><tr><td>taxonomy<\/td><td>tak<\/td><td>Heading, Button (link)<\/td><td>zwraca termin taksonomii lub URL archiwum<\/td><\/tr><tr><td>file<\/td><td>tak<\/td><td>Button (atrybut Link)<\/td><td>do pobrania PDF, dokument\u00f3w<\/td><\/tr><tr><td><strong>repeater<\/strong><\/td><td><strong>nie<\/strong><\/td><td>\u2014<\/td><td>wymaga Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater<\/td><\/tr><tr><td><strong>group<\/strong><\/td><td><strong>nie<\/strong><\/td><td>\u2014<\/td><td>shortcode w PHP lub dodatek<\/td><\/tr><tr><td><strong>flexible content<\/strong><\/td><td><strong>nie<\/strong><\/td><td>\u2014<\/td><td>shortcode w PHP lub dodatek<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Dlaczego repeater, group i flexible content nie dzia\u0142aj\u0105 natywnie w Dynamic Tags?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Te trzy typy p\u00f3l nie zwracaj\u0105 jednej warto\u015bci, tylko zestaw warto\u015bci w p\u0119tli. Elementor Dynamic Tags dzia\u0142a w modelu \u201ejedno \u017ar\u00f3d\u0142o \u2013 jedno pole&#8221; \u2013 wybierasz klucz, dostajesz warto\u015b\u0107. Repeater zwraca tablic\u0119 wierszy, ka\u017cdy z kilkoma podpolami. To wymaga renderingu w p\u0119tli, czego natywny Dynamic Tag nie potrafi.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Any ACF fields not included in this list, such as repeater fields, are not supported at this time.<\/p>\n<cite><a href=\"https:\/\/elementor.com\/help\/elementor-acf\/\" rel=\"nofollow noopener\" target=\"_blank\">Elementor \u2014 Elementor Integration With ACF (sekcja \u201eCustom ACF fields we support&#8221;)<\/a><\/cite><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Jak obej\u015b\u0107 brak wsparcia repeatera bez PHP \u2014 przez Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Problem repeatera bez kodu rozwi\u0105zuj\u0105 dwa dodatki:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/allkeystore.pl\/produkt\/wtyczka-dynamic-content-for-elementor\/\"><strong>Dynamic Content for Elementor<\/strong> <\/a>od dynamic.ooo \u2013 komercyjna wtyczka z setkami wid\u017cet\u00f3w; obejmuje repeater, group, flexible content, ACF Maps, ACF Posts Loop; bogata funkcjonalno\u015b\u0107, krzywa uczenia stromsza, ale rozwi\u0105zuje problem repeatera ca\u0142o\u015bciowo,<\/li>\n\n\n\n<li><strong>Dynamic Elementor ACF Repeater<\/strong> z WP.org \u2013 darmowa wtyczka skupiona w\u0105sko na jednej rzeczy: most mi\u0119dzy repeaterem ACF a Elementor Loop Grid \/ Loop Items; potrzebujesz wy\u0142\u0105cznie repeatera? to l\u017cejsze rozwi\u0105zanie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Po instalacji dodatku w wid\u017cecie Loop Grid (albo innym w\u0142a\u015bciwym dla danego pluginu) w polu \u201eSource&#8221; pojawi si\u0119 opcja \u201eACF Repeater&#8221; \u2013 wybierasz pole repeater i konfigurujesz Loop Item z podpi\u0119ciem do podp\u00f3l. Konfiguracja jest klikalna, bez PHP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kiedy realnie si\u0119gn\u0105\u0107 po JetEngine zamiast obej\u015b\u0107 ACF + Elementor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/allkeystore.pl\/produkt\/wtyczka-jet-engine-for-elementor\/\">JetEngine<\/a> od Crocoblock to konkurencyjna kombinacja: w\u0142asne pola, w\u0142asne listingi, w\u0142asne dynamic templates \u2013 wszystko zintegrowane z Elementorem w jednym ekosystemie. Si\u0119gaj po niego, gdy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>budujesz katalog albo dyrektori\u0119 z zaawansowanym filtrowaniem (AJAX, multi-select, range slider),<\/li>\n\n\n\n<li>potrzebujesz Query Builder z customowymi zapytaniami do bazy (np. \u201eposty z metawarto\u015bci\u0105 X wi\u0119ksz\u0105 ni\u017c Y&#8221;),<\/li>\n\n\n\n<li>twoje pola b\u0119d\u0105 g\u0142\u00f3wnie repeaterami i relacjami mi\u0119dzy CPT \u2013 JetEngine ma to natywnie,<\/li>\n\n\n\n<li>chcesz mie\u0107 wszystko w jednym ekosystemie, bez \u017conglowania mi\u0119dzy ACF, Elementor Pro i dodatkami repeatera.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dla typowego biznesowego CPT (og\u0142oszenia, portfolio, oferty) z prostymi polami ACF + Elementor Pro nadal wygrywaj\u0105. S\u0105 ta\u0144sze, lepiej udokumentowane, maj\u0105 wi\u0119ksz\u0105 spo\u0142eczno\u015b\u0107. JetEngine wybierasz wtedy, gdy zaczynaj\u0105 si\u0119 ograniczenia natywnej integracji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jakie-pulapki-i-konflikty-najczesciej-psuja-dynamiczny\">Jakie pu\u0142apki i konflikty najcz\u0119\u015bciej psuj\u0105 dynamiczny szablon \u2014 i jak je naprawi\u0107?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lista typowych problem\u00f3w jest kr\u00f3tka, ale ich diagnoza ci\u0105gnie si\u0119 godzinami, je\u015bli nie wiesz, gdzie szuka\u0107. Poni\u017cej najcz\u0119stsze pu\u0142apki w kolejno\u015bci od najcz\u0119stszej do najbardziej egzotycznej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dlaczego pole ACF nie pojawia si\u0119 na li\u015bcie Dynamic Tags i jak to naprawi\u0107?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Co widzisz<\/th><th>Co to znaczy<\/th><th>Co zrobi\u0107<\/th><\/tr><\/thead><tbody><tr><td>Lista ACF Field jest pusta<\/td><td>\u017caden Field Group nie ma Location Rule dla bie\u017c\u0105cego CPT<\/td><td>ACF &gt; Field Groups &gt; edycja grupy &gt; Location Rules &gt; Post Type is equal to [tw\u00f3j CPT]<\/td><\/tr><tr><td>Pole jest na li\u015bcie, ale warto\u015b\u0107 jest pusta<\/td><td>w testowym wpisie pole jest niewype\u0142nione<\/td><td>otw\u00f3rz wpis ustawiony w Preview Settings i wpisz warto\u015b\u0107 w pole<\/td><\/tr><tr><td>Pole repeater \/ group \/ flexible nie ma si\u0119 na li\u015bcie<\/td><td>typ pola nie jest wspierany natywnie<\/td><td>zainstaluj Dynamic Content for Elementor lub Dynamic Elementor ACF Repeater<\/td><\/tr><tr><td>Pole istnieje, ale Elementor go nie pokazuje mimo dobrej Location Rule<\/td><td>cache panelu admin lub Preview Settings wskazuje na inny CPT<\/td><td>wyczy\u015b\u0107 cache Elementora (Elementor &gt; Tools &gt; Regenerate Files &amp; Data) i sprawd\u017a Preview Settings<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Co zrobi\u0107, gdy pole URL nie dzia\u0142a jako dynamiczny link?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pole ACF typu URL jest projektowane wy\u0142\u0105cznie do atrybutu Link wid\u017cetu. Pr\u00f3bujesz je wstawi\u0107 jako tre\u015b\u0107 wid\u017cetu Heading albo Text Editor? Lista Dynamic Tags w og\u00f3le nie poka\u017ce tej opcji. Rozwi\u0105zanie: zmie\u0144 wid\u017cet na taki, kt\u00f3ry ma atrybut Link (Button, Heading z opcj\u0105 linkowania, Icon Box, Image z opcj\u0105 \u201eLink to&#8221;) i tam podepnij pole URL. Drugi wariant: zamiast pola URL u\u017cyj pola Text \u2013 wtedy warto\u015b\u0107 trafi do tre\u015bci wid\u017cetu, ale nie b\u0119dzie klikalnym linkiem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak diagnozowa\u0107 konflikty po aktualizacji Elementor Pro (np. z ACF Pro Extended)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Po ka\u017cdej du\u017cej aktualizacji Elementor Pro albo ACF zdarza si\u0119, \u017ce dynamic tags przestaj\u0105 zwraca\u0107 warto\u015bci, cho\u0107 pola s\u0105 poprawnie wype\u0142nione. Zacznij od trybu \u201eSafe Mode&#8221; w Elementorze: \u201eElementor &gt; Tools &gt; Safe Mode &gt; Enable&#8221;. Tryb wy\u0142\u0105cza wszystkie wtyczki poza Elementorem i ACF. Problem znika? Winowajc\u0105 jest kt\u00f3ra\u015b z pozosta\u0142ych wtyczek.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najcz\u0119stsi sprawcy konflikt\u00f3w: ACF Pro Extended, ACF Extended, ACF Frontend Form, a po stronie cache \u2013 LiteSpeed Cache, <a href=\"https:\/\/allkeystore.pl\/produkt\/wtyczka-wp-rocket\/\">WP Rocket<\/a> i Cloudflare z agresywnym cache HTML. Wy\u0142\u0105czaj po kolei, sprawdzaj po ka\u017cdym wy\u0142\u0105czeniu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak post\u0119powa\u0107, gdy WPML + Dynamic Conditions + ACF si\u0119 rozje\u017cd\u017caj\u0105?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/allkeystore.pl\/produkt\/wpml-pelny-pakiet-wtyczek\/\">WPML<\/a> w po\u0142\u0105czeniu z Dynamic Conditions Elementora i polami ACF bywa wra\u017cliwy \u2013 wieloj\u0119zyczne kopie wpis\u00f3w potrafi\u0105 gubi\u0107 powi\u0105zania metadanych. Zacznij od testu kontrolnego: wy\u0142\u0105cz WPML, sprawd\u017a, czy szablon i warunki dzia\u0142aj\u0105 na czystym WordPressie. Dzia\u0142aj\u0105? Problem siedzi po stronie WPML i wymaga konfiguracji \u201eCustom Field Translation Preferences&#8221; w WPML String Translation. Ka\u017cde pole ACF, kt\u00f3rego u\u017cywasz w Dynamic Conditions, musi by\u0107 ustawione na \u201eCopy&#8221; albo \u201eTranslate&#8221;, nigdy \u201eDon&#8217;t translate&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak ogarn\u0105\u0107 caching, \u017ceby \u015bwie\u017ce dane ACF by\u0142y widoczne na froncie?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cache to typowy ostatni podejrzany \u2013 edytujesz pole w panelu, zapisujesz, otwierasz front i widzisz stary tekst. Sprawd\u017a po kolei: cache przegl\u0105darki (Ctrl+F5 albo tryb incognito), cache wtyczki (WP Rocket \/ LiteSpeed Cache \u2013 przycisk \u201eClear Cache&#8221;), cache serwera (panel hostingu), cache CDN (Cloudflare \u2013 \u201ePurge Everything&#8221;). U\u017cywasz Cloudflare z agresywnym cache HTML? Ustaw page rule wykluczaj\u0105c\u0105 URL szablonu Single z cache albo zmie\u0144 strategi\u0119 cache na \u201eCache Everything&#8221; z TTL nie d\u0142u\u017cszym ni\u017c 1 godzina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Po wyczyszczeniu wszystkich warstw sprawd\u017a nag\u0142\u00f3wki HTTP odpowiedzi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -I https:\/\/twojadomena.pl\/property\/przykladowy-wpis\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Szukaj nag\u0142\u00f3wk\u00f3w <code>CF-Cache-Status<\/code> (Cloudflare), <code>X-Cache<\/code> (cache serwera) i <code>X-LiteSpeed-Cache<\/code> (LiteSpeed). Warto\u015b\u0107 <code>HIT<\/code> oznacza odpowied\u017a z cache \u2013 wtedy \u015bwie\u017ce dane ACF nie dotr\u0105. Warto\u015b\u0107 <code>MISS<\/code> albo <code>DYNAMIC<\/code> oznacza \u015bwie\u017c\u0105 odpowied\u017a z serwera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-wyglada-kompletny-scenariusz-wdrozenia-na-przykladzie\">Jak wygl\u0105da kompletny scenariusz wdro\u017cenia na przyk\u0142adzie CPT \u201eProperty&#8221;?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Czas zebra\u0107 wszystko w jedno sp\u00f3jne wdro\u017cenie. Poni\u017cszy scenariusz to <em>acf elementor tutorial<\/em> w pe\u0142nym kszta\u0142cie \u2013 od rejestracji CPT, przez Field Group, po szablon Single z podpi\u0119tymi wszystkimi polami. Czas ca\u0142kowity: od 45 minut do 2 godzin, w zale\u017cno\u015bci od liczby p\u00f3l i z\u0142o\u017cono\u015bci layoutu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie pola ACF zdefiniowa\u0107 dla CPT \u201eProperty&#8221; (adres, sypialnie, \u0142azienki, metra\u017c, cena, galeria)?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>property_address<\/code> \u2013 Text \u2013 adres nieruchomo\u015bci,<\/li>\n\n\n\n<li><code>property_bedrooms<\/code> \u2013 Number \u2013 liczba sypialni,<\/li>\n\n\n\n<li><code>property_bathrooms<\/code> \u2013 Number \u2013 liczba \u0142azienek,<\/li>\n\n\n\n<li><code>property_size<\/code> \u2013 Number \u2013 metra\u017c (m\u00b2),<\/li>\n\n\n\n<li><code>property_price<\/code> \u2013 Number \u2013 cena w PLN,<\/li>\n\n\n\n<li><code>property_gallery<\/code> \u2013 Gallery \u2013 zdj\u0119cia nieruchomo\u015bci,<\/li>\n\n\n\n<li><code>property_map<\/code> \u2013 Google Map (ACF PRO) \u2013 lokalizacja na mapie,<\/li>\n\n\n\n<li><code>property_virtual_tour_url<\/code> \u2013 URL \u2013 link do wirtualnego spaceru,<\/li>\n\n\n\n<li><code>property_status<\/code> \u2013 Select (Na sprzeda\u017c \/ Wynajem \/ Sprzedane) \u2013 status oferty.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Wszystkie 9 p\u00f3l w jednym Field Group \u201eProperty Details&#8221; z Location Rule \u201ePost Type is equal to Property&#8221;. Tytu\u0142 wpisu (Post Title) s\u0142u\u017cy jako nazwa nieruchomo\u015bci \u2013 nie definiuj osobnego pola <code>property_name<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak z\u0142o\u017cy\u0107 layout Single i podpi\u0105\u0107 ka\u017cde pole przez Dynamic Tags?<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>sekcja Hero<\/strong> (full-width, wysoko\u015b\u0107 60vh): Section background podpi\u0119ty do Featured Image (core), wewn\u0105trz dwa wid\u017cety Heading \u2013 H1 z Post Title (core), H3 z <code>property_address<\/code> (ACF Field, Fallback \u201eAdres na zapytanie&#8221;);<\/li>\n\n\n\n<li><strong>sekcja Status + Cena<\/strong> (2 kolumny): lewa \u2013 wid\u017cet Heading H2 z <code>property_status<\/code> (Before \u201eStatus: &#8222;); prawa \u2013 wid\u017cet Heading H2 z <code>property_price<\/code> (Before \u201eCena: &#8222;, After \u201e PLN&#8221;, Fallback \u201eCena na zapytanie&#8221;);<\/li>\n\n\n\n<li><strong>sekcja Parametry<\/strong> (3 kolumny, Icon Box w ka\u017cdej): kolumna 1 \u2013 ikona \u0142\u00f3\u017cka + Heading H3 z <code>property_bedrooms<\/code> + tekst \u201esypialnie&#8221;; kolumna 2 \u2013 ikona prysznica + <code>property_bathrooms<\/code> + \u201e\u0142azienek&#8221;; kolumna 3 \u2013 ikona linijki + <code>property_size<\/code> + \u201em\u00b2&#8221;;<\/li>\n\n\n\n<li><strong>sekcja Galeria<\/strong> (full-width): wid\u017cet Gallery z dynamicznym \u017ar\u00f3d\u0142em <code>property_gallery<\/code>, kolumny 3, lightbox w\u0142\u0105czony;<\/li>\n\n\n\n<li><strong>sekcja Mapa<\/strong> (full-width): wid\u017cet Google Maps z dynamicznym \u017ar\u00f3d\u0142em <code>property_map<\/code>, wysoko\u015b\u0107 400px;<\/li>\n\n\n\n<li><strong>sekcja CTA<\/strong> (1 kolumna, centrowana): wid\u017cet Button \u201eWirtualny spacer&#8221; z dynamicznym linkiem do <code>property_virtual_tour_url<\/code>, drugi Button \u201eUm\u00f3w ogl\u0105danie&#8221; z linkiem do podstrony kontaktu (statyczny \u2013 nie zmienia si\u0119 mi\u0119dzy wpisami).<\/li>\n<\/ol>\n\n\n\n<div style=\"max-width:850px; margin:2em auto; text-align:center;\">\n<svg viewBox=\"0 0 850 620\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-labelledby=\"title-drzewo-natywny-dodatek\" style=\"max-width:100%; height:auto;\">\n  <title id=\"title-drzewo-natywny-dodatek\">Drzewo decyzyjne: natywny Dynamic Tag, dodatek do Elementora czy JetEngine<\/title>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\"\n            markerWidth=\"8\" markerHeight=\"8\" orient=\"auto-start-reverse\">\n      <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"currentColor\" fill-opacity=\"0.5\"\/>\n    <\/marker>\n  <\/defs>\n\n  <style>\n    .dt-question { fill: #f3f5f7; stroke: #009434; stroke-width: 1.5; }\n    .dt-result { fill: #009434; }\n    .dt-result-warning { fill: #C46340; }\n    .dt-text { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 13px; }\n    .dt-text-small { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 11px; }\n    .dt-text-result { fill: #ffffff; font-family: 'Roboto', sans-serif; font-size: 12px; font-weight: 600; }\n    .dt-text-result-small { fill: #ffffff; font-family: 'Roboto', sans-serif; font-size: 11px; }\n    .dt-arrow { stroke: currentColor; stroke-opacity: 0.5; stroke-width: 1.5; fill: none; }\n    .dt-label { fill: currentColor; font-family: 'Roboto', sans-serif; font-size: 11px; font-weight: 700; }\n    html[data-neve-theme=\"dark\"] .dt-question { fill: #2b2b2b; }\n  <\/style>\n\n  <!-- WSZYSTKIE STRZA\u0141KI NAJPIERW (warstwa pod blokami) -->\n\n  <!-- 1) Korze\u0144 (romb) na \u015brodku x=425, y=20-140 (\u015brodek pionowy 80) \u2014 rozga\u0142\u0119zia si\u0119 na 3 \u015bcie\u017cki.\n        Uk\u0142ad N=3: magistrala pionowa + 3 odga\u0142\u0119zienia poziome.\n        Boxy docelowe u\u0142o\u017cone w pionowej kolumnie po lewej x=40..280, y=200, y=320, y=440 (szer. 240, wys. 70).\n        Magistrala na x=370, y=160..475. -->\n\n  <!-- \u0141\u0105cznik z rombu (dolny wierzcho\u0142ek (425,140)) do magistrali (370,160): 2 segmenty bez grotu -->\n  <line class=\"dt-arrow\" x1=\"425\" y1=\"140\" x2=\"425\" y2=\"160\"\/>\n  <line class=\"dt-arrow\" x1=\"425\" y1=\"160\" x2=\"370\" y2=\"160\"\/>\n\n  <!-- Magistrala pionowa (bez grotu) -->\n  <line class=\"dt-arrow\" x1=\"370\" y1=\"160\" x2=\"370\" y2=\"475\"\/>\n\n  <!-- Odga\u0142\u0119zienie 1: pozioma strza\u0142ka do boxa \u201ePojedyncza warto\u015b\u0107\" (y=235, \u015brodek) \u2014 koniec na x = 280 + 10 = 290 (cofni\u0119te od x=280 czyli prawej kraw\u0119dzi boxa o 10) \u2014 czekaj, box jest po lewej, wi\u0119c strza\u0142ka idzie od magistrali (x=370) w lewo do prawej kraw\u0119dzi boxa (x=280). x2 = 280 + 10 = 290.\n       Boxy po lewej: x=40..280. Prawa kraw\u0119d\u017a na x=280. Strza\u0142ka ko\u0144czy si\u0119 10px przed praw\u0105 kraw\u0119dzi\u0105 -> x2 = 280 + 10 = 290. -->\n  <line class=\"dt-arrow\" x1=\"370\" y1=\"235\" x2=\"290\" y2=\"235\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"dt-arrow\" x1=\"370\" y1=\"355\" x2=\"290\" y2=\"355\" marker-end=\"url(#arrow)\"\/>\n  <line class=\"dt-arrow\" x1=\"370\" y1=\"475\" x2=\"290\" y2=\"475\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- Z drugiego boxa \u201eRepeater \/ Group \/ Flexible\" wychodzi rozga\u0142\u0119zienie do dw\u00f3ch box\u00f3w po prawej:\n       drugi pytaj\u0105cy romb x=470 (\u015brodek), y=320..400 (wierzcho\u0142ki). To pomocniczy w\u0119ze\u0142 \u201eJak z\u0142o\u017cony przypadek?\"\n       Boxy po prawej: x=590..830 (szer. 240), y=290 i y=400. -->\n\n  <!-- Strza\u0142ka z boxa \u201eRepeater \/ Group \/ Flexible\" do rombu \u201eJak z\u0142o\u017cony przypadek?\" \u2014 trasa Z-shape (poprawka po review Konrada). -->\n  <!-- Box \u017ar\u00f3d\u0142owy: x=40-280, y=320-390, \u015brodek dolnej kraw\u0119dzi (160, 390). Romb cel: lewy wierzcho\u0142ek (470, 360). -->\n  <!-- Polyline: (160, 390) dotyka dolnej kraw\u0119dzi boxa \u2192 (160, 415) kr\u00f3tki odcinek pionowy w d\u00f3\u0142 \u2192 (455, 415) d\u0142ugi odcinek poziomy \u2192 (465, 372) uko\u015bny ostatni odcinek do rombu z marginesem ~14px od lewego wierzcho\u0142ka. -->\n  <polyline class=\"dt-arrow\" points=\"160,390 160,415 455,415 465,372\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- Z rombu pomocniczego: rozga\u0142\u0119zienie g\u00f3ra\/d\u00f3\u0142 (poprawka po review Konrada \u2014 boxy przeniesione nad\/pod romb).\n       Box g\u00f3rny: x=440, y=210, szer. 240, wys. 60. \u015arodek (560, 240). Dolna kraw\u0119d\u017a = 270.\n       Box dolny: x=440, y=450, szer. 240, wys. 60. \u015arodek (560, 480). G\u00f3rna kraw\u0119d\u017a = 450.\n       Romb g\u00f3rny wierzcho\u0142ek (560, 310), dolny wierzcho\u0142ek (560, 410). -->\n  <!-- Strza\u0142ka w g\u00f3r\u0119: z g\u00f3rnego wierzcho\u0142ka rombu (560, 310) do 10px pod doln\u0105 kraw\u0119dzi\u0105 g\u00f3rnego boxa (y=280). Margines ~10px. -->\n  <line class=\"dt-arrow\" x1=\"560\" y1=\"310\" x2=\"560\" y2=\"280\" marker-end=\"url(#arrow)\"\/>\n  <!-- Strza\u0142ka w d\u00f3\u0142: z dolnego wierzcho\u0142ka rombu (560, 410) do 10px nad g\u00f3rn\u0105 kraw\u0119dzi\u0105 dolnego boxa (y=440). Margines ~10px. -->\n  <line class=\"dt-arrow\" x1=\"560\" y1=\"410\" x2=\"560\" y2=\"440\" marker-end=\"url(#arrow)\"\/>\n\n  <!-- BLOKI (warstwa nad strza\u0142kami) -->\n\n  <!-- Romb startowy: korze\u0144 pytania -->\n  <polygon class=\"dt-question\" points=\"425,20 600,80 425,140 250,80\"\/>\n\n  <!-- 3 boxy docelowe magistrali (kolumna po lewej) -->\n  <rect class=\"dt-result\" x=\"40\" y=\"200\" width=\"240\" height=\"70\" rx=\"4\"\/>\n  <rect class=\"dt-question\" x=\"40\" y=\"320\" width=\"240\" height=\"70\" rx=\"4\"\/>\n  <rect class=\"dt-result-warning\" x=\"40\" y=\"440\" width=\"240\" height=\"70\" rx=\"4\"\/>\n\n  <!-- Pomocniczy romb pytania (z boxa \u201eRepeater...\") -->\n  <polygon class=\"dt-question\" points=\"560,310 650,360 560,410 470,360\"\/>\n\n  <!-- 2 boxy: g\u00f3rny nad rombem pomocniczym, dolny pod nim (poprawka po review Konrada) -->\n  <rect class=\"dt-result\" x=\"440\" y=\"210\" width=\"240\" height=\"60\" rx=\"4\"\/>\n  <rect class=\"dt-result\" x=\"440\" y=\"450\" width=\"240\" height=\"60\" rx=\"4\"\/>\n\n  <!-- TEKSTY na ko\u0144cu -->\n\n  <!-- Tekst rombu startowego -->\n  <text class=\"dt-text\" x=\"425\" y=\"75\" text-anchor=\"middle\">Jakiego typu pola<\/text>\n  <text class=\"dt-text\" x=\"425\" y=\"93\" text-anchor=\"middle\">potrzebujesz?<\/text>\n\n  <!-- Box 1: Pojedyncza warto\u015b\u0107 -->\n  <text class=\"dt-text-result\" x=\"160\" y=\"222\" text-anchor=\"middle\">Pojedyncza warto\u015b\u0107<\/text>\n  <text class=\"dt-text-result-small\" x=\"160\" y=\"240\" text-anchor=\"middle\">(tekst, obraz, URL, gallery)<\/text>\n  <text class=\"dt-text-result-small\" x=\"160\" y=\"258\" text-anchor=\"middle\">Natywny Dynamic Tag \u2014 bez dodatk\u00f3w<\/text>\n\n  <!-- Box 2: Repeater \/ Group \/ Flexible (pytanie wewn\u0119trzne \u2014 u\u017cywamy stylu question) -->\n  <text class=\"dt-text\" x=\"160\" y=\"345\" text-anchor=\"middle\">Repeater \/ Group \/<\/text>\n  <text class=\"dt-text\" x=\"160\" y=\"363\" text-anchor=\"middle\">Flexible Content<\/text>\n  <text class=\"dt-text-small\" x=\"160\" y=\"380\" text-anchor=\"middle\">\u2192 rozwa\u017c z\u0142o\u017cono\u015b\u0107 przypadku<\/text>\n\n  <!-- Box 3: JetEngine (warning\/akcja \u2014 terakota) -->\n  <text class=\"dt-text-result\" x=\"160\" y=\"462\" text-anchor=\"middle\">Zaawansowane Query, AJAX<\/text>\n  <text class=\"dt-text-result-small\" x=\"160\" y=\"480\" text-anchor=\"middle\">filtrowanie, relacje mi\u0119dzy CPT<\/text>\n  <text class=\"dt-text-result-small\" x=\"160\" y=\"498\" text-anchor=\"middle\">JetEngine (alternatywa do ACF)<\/text>\n\n  <!-- Pomocniczy romb -->\n  <text class=\"dt-text-small\" x=\"560\" y=\"358\" text-anchor=\"middle\">Jak z\u0142o\u017cony<\/text>\n  <text class=\"dt-text-small\" x=\"560\" y=\"373\" text-anchor=\"middle\">przypadek?<\/text>\n\n  <!-- Box g\u00f3rny: prosty repeater (nad rombem pomocniczym, \u015brodek x=560, y=240) -->\n  <text class=\"dt-text-result\" x=\"560\" y=\"232\" text-anchor=\"middle\">Prosty repeater<\/text>\n  <text class=\"dt-text-result-small\" x=\"560\" y=\"248\" text-anchor=\"middle\">Dynamic Elementor ACF Repeater<\/text>\n  <text class=\"dt-text-result-small\" x=\"560\" y=\"264\" text-anchor=\"middle\">(darmowy)<\/text>\n\n  <!-- Box dolny: z\u0142o\u017cony repeater + flexible (pod rombem pomocniczym, \u015brodek x=560, y=480) -->\n  <text class=\"dt-text-result\" x=\"560\" y=\"472\" text-anchor=\"middle\">Z\u0142o\u017cony repeater + flexible<\/text>\n  <text class=\"dt-text-result-small\" x=\"560\" y=\"488\" text-anchor=\"middle\">Dynamic Content for Elementor<\/text>\n  <text class=\"dt-text-result-small\" x=\"560\" y=\"504\" text-anchor=\"middle\">(p\u0142atny)<\/text>\n<\/svg>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Jak przetestowa\u0107 szablon i co sprawdzi\u0107 przed publikacj\u0105?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Test w 60 sekund \u2013 zanim opublikujesz szablon dla wszystkich wpis\u00f3w:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>krok 1 (15 sek)<\/strong>: utw\u00f3rz w panelu drugi testowy wpis CPT \u201eProperty&#8221; z innym zestawem danych (kr\u00f3tszy adres, mniejsza galeria, brak ceny \u2013 celowo, \u017ceby przetestowa\u0107 fallback);<\/li>\n\n\n\n<li><strong>krok 2 (15 sek)<\/strong>: w Preview Settings prze\u0142\u0105cz podgl\u0105d na drugi wpis \u2013 sprawd\u017a, czy layout si\u0119 nie rozje\u017cd\u017ca i czy fallback dla ceny si\u0119 pokaza\u0142;<\/li>\n\n\n\n<li><strong>krok 3 (15 sek)<\/strong>: otw\u00f3rz front w trybie incognito (Ctrl+Shift+N) \u2013 bez cache przegl\u0105darki sprawdzasz realny wygl\u0105d dla u\u017cytkownika;<\/li>\n\n\n\n<li><strong>krok 4 (15 sek)<\/strong>: kliknij wszystkie linki (Button CTA, Heading z linkiem, Image z linkiem) \u2013 upewnij si\u0119, \u017ce \u017caden nie prowadzi do <code>#<\/code> ani <code>about:blank<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Wszystkie 4 kroki przesz\u0142y? Szablon jest gotowy do publikacji. Display Conditions (\u201eAll Properties&#8221;) wci\u0105gn\u0105 pod ten szablon wszystkie istniej\u0105ce i przysz\u0142e wpisy CPT.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jakie-jest-podsumowanie-kluczowych-informacji\">Jakie jest podsumowanie kluczowych informacji?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dynamiczny szablon WordPress w duecie ACF i Elementor Pro buduje si\u0119 w jednym, powtarzalnym schemacie: zarejestruj CPT w ACF, utw\u00f3rz Field Group z Location Rule do tego CPT, w Theme Builderze utw\u00f3rz Single Template, ustaw Preview Settings, podepnij pola przez Dynamic Tags, ustaw Display Conditions. Bez PHP zrobisz wszystko poza repeaterem, group i flexible content \u2013 te trzy typy wymagaj\u0105 dodatku (Dynamic Content for Elementor albo Dynamic Elementor ACF Repeater) albo shortcode&#8217;a w PHP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ko\u0144cowa checklista przed publikacj\u0105:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015brodowisko spe\u0142nia minimum (WP 6.5+, PHP 7.4+, RAM 256 MB+),<\/li>\n\n\n\n<li>Field Group ma poprawne Location Rule do twojego CPT,<\/li>\n\n\n\n<li>ka\u017cdy wid\u017cet w szablonie ma \u017ar\u00f3d\u0142o w Dynamic Tags \u2013 \u017cadnego tekstu \u201ena sztywno&#8221;,<\/li>\n\n\n\n<li>ka\u017cde opcjonalne pole ma ustawiony Fallback,<\/li>\n\n\n\n<li>Display Conditions wskazuj\u0105 \u201eAll [tw\u00f3j CPT]&#8221;.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Kiedy ACF + Elementor wystarcz\u0105? Przy typowych CPT biznesowych (oferty, portfolio, katalog produkt\u00f3w, nieruchomo\u015bci, oferty pracy) z prostymi polami. Kiedy si\u0119gnij po dodatek? Gdy musisz wy\u015bwietli\u0107 repeater albo flexible content bez kodu. Kiedy przeskoczy\u0107 na JetEngine? Gdy budujesz z\u0142o\u017cony katalog z AJAX-owym filtrowaniem, customowymi query do bazy, albo potrzebujesz wszystkiego w jednym ekosystemie bez \u017conglowania wtyczkami.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jakie-sa-najczesciej-zadawane-pytania-faq\">Jakie s\u0105 najcz\u0119\u015bciej zadawane pytania (FAQ)?<\/h2>\n\n\n\n<div class=\"aks-art-faq\">\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Czy potrzebuj\u0119 Elementor Pro, \u017ceby u\u017cywa\u0107 Dynamic Tags z ACF?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>Tak, bezwzgl\u0119dnie. Dynamic Tags, Theme Builder i Display Conditions to funkcje wy\u0142\u0105cznie Elementor Pro \u2013 darmowa wersja Elementora nie udost\u0119pnia ani ikony Dynamic Tags w wid\u017cetach, ani Theme Buildera, w kt\u00f3rym budujesz szablony Single. Bez Pro nie zbudujesz dynamicznego szablonu opartego o ACF, niezale\u017cnie od tego, jak skonfigurujesz ACF.<\/p>\n    <\/div>\n  <\/details>\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Dlaczego moje pole ACF nie pojawia si\u0119 w li\u015bcie Dynamic Tags w Elementor Pro?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>Trzy najcz\u0119stsze przyczyny: Field Group nie ma Location Rule pasuj\u0105cej do bie\u017c\u0105cego typu tre\u015bci (sprawd\u017a \u201eACF &gt; Field Groups &gt; edycja grupy &gt; Location Rules&#8221;), wpis testowy w Preview Settings nie ma wype\u0142nionej warto\u015bci w tym polu, albo pole jest typu repeater \/ group \/ flexible content \u2013 te nie maj\u0105 natywnego wsparcia i wymagaj\u0105 dodatku.<\/p>\n    <\/div>\n  <\/details>\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Jak wy\u015bwietli\u0107 repeater ACF w Elementorze bez pisania PHP?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>Bez kodu masz dwa wyj\u015bcia: zainstaluj darmow\u0105 wtyczk\u0119 Dynamic Elementor ACF Repeater z WP.org \u2013 udost\u0119pnia wid\u017cety Loop dla repeatera \u2013 albo komercyjn\u0105 Dynamic Content for Elementor od dynamic.ooo, kt\u00f3ra obejmuje repeater, group, flexible content i wiele innych typ\u00f3w p\u00f3l. Pierwsza opcja jest w\u0119\u017csza i darmowa, druga \u2013 szersza i p\u0142atna.<\/p>\n    <\/div>\n  <\/details>\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Czy ACF + Elementor dzia\u0142a poprawnie z WPML i wieloj\u0119zyczno\u015bci\u0105?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>Dzia\u0142a, ale wymaga starannej konfiguracji. W WPML String Translation ustaw dla ka\u017cdego pola ACF u\u017cywanego w szablonie tryb \u201eCopy&#8221; albo \u201eTranslate&#8221; \u2013 nigdy \u201eDon&#8217;t translate&#8221;. Dynamic Conditions oparte o pola ACF bywaj\u0105 wra\u017cliwe na wieloj\u0119zyczno\u015b\u0107. Zacznij testowanie od wy\u0142\u0105czenia WPML i potwierd\u017a, czy szablon dzia\u0142a bez niego, zanim zaczniesz diagnozowa\u0107 konfiguracj\u0119 WPML.<\/p>\n    <\/div>\n  <\/details>\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Jaka wersja PHP jest najlepsza dla Elementor Pro + ACF w 2026 roku?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>PHP 8.4 albo 8.5. Minimum oficjalnie wymagane przez Elementora to 7.4, ale 8.x daje zauwa\u017caln\u0105 przewag\u0119 wydajno\u015bciow\u0105 i lepsz\u0105 kompatybilno\u015b\u0107 z przysz\u0142ymi aktualizacjami. Testy spo\u0142eczno\u015bci potwierdzaj\u0105, \u017ce Elementor Pro dzia\u0142a stabilnie na PHP 8.5 \u2013 je\u015bli hosting na to pozwala, ustaw najwy\u017csz\u0105 dost\u0119pn\u0105 wersj\u0119 8.x.<\/p>\n    <\/div>\n  <\/details>\n  <details class=\"aks-art-faq__item\">\n    <summary class=\"aks-art-faq__question\">\n      <h3 class=\"aks-art-faq__question-title\">Czy mog\u0119 zbudowa\u0107 w 100% dynamiczny header i footer z polami ACF Options Pages?<\/h3>\n      <span class=\"aks-art-faq__icon\" aria-hidden=\"true\"><\/span>\n    <\/summary>\n    <div class=\"aks-art-faq__answer\">\n      <p>Tak \u2013 to klasyczny scenariusz dla ACF Options Pages (wymaga ACF PRO). Zarejestruj Options Page \u201eSite Settings&#8221; w ACF, dodaj Field Group z polami globalnymi (numer telefonu, adres, tre\u015b\u0107 CTA stopki, link do regulaminu) i przypisz Location Rule do tej Options Page. W Theme Builderze utw\u00f3rz Header i Footer, podpinaj wid\u017cety do tych p\u00f3l tak samo jak do p\u00f3l CPT \u2013 w Dynamic Tags pojawi\u0105 si\u0119 jako ACF Field. Edytujesz dane w jednym miejscu, zmiany wida\u0107 wsz\u0119dzie.<\/p>\n    <\/div>\n  <\/details>\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Czy potrzebuj\u0119 Elementor Pro, \u017ceby u\u017cywa\u0107 Dynamic Tags z ACF?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Tak, bezwzgl\u0119dnie. Dynamic Tags, Theme Builder i Display Conditions to funkcje wy\u0142\u0105cznie Elementor Pro \u2014 darmowa wersja Elementora nie udost\u0119pnia ani ikony Dynamic Tags w wid\u017cetach, ani Theme Buildera, w kt\u00f3rym budujesz szablony Single. Bez Pro nie zbudujesz dynamicznego szablonu opartego o ACF, niezale\u017cnie od tego, jak skonfigurujesz ACF.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Dlaczego moje pole ACF nie pojawia si\u0119 w li\u015bcie Dynamic Tags w Elementor Pro?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Trzy najcz\u0119stsze przyczyny: Field Group nie ma Location Rule pasuj\u0105cej do bie\u017c\u0105cego typu tre\u015bci, wpis testowy w Preview Settings nie ma wype\u0142nionej warto\u015bci w tym polu, albo pole jest typu repeater, group lub flexible content \u2014 te nie maj\u0105 natywnego wsparcia i wymagaj\u0105 dodatku.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Jak wy\u015bwietli\u0107 repeater ACF w Elementorze bez pisania PHP?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Bez kodu masz dwa wyj\u015bcia: zainstaluj darmow\u0105 wtyczk\u0119 Dynamic Elementor ACF Repeater z WP.org \u2014 udost\u0119pnia wid\u017cety Loop dla repeatera \u2014 albo komercyjn\u0105 Dynamic Content for Elementor od dynamic.ooo, kt\u00f3ra obejmuje repeater, group, flexible content i wiele innych typ\u00f3w p\u00f3l. Pierwsza opcja jest w\u0119\u017csza i darmowa, druga \u2014 szersza i p\u0142atna.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Czy ACF + Elementor dzia\u0142a poprawnie z WPML i wieloj\u0119zyczno\u015bci\u0105?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Dzia\u0142a, ale wymaga starannej konfiguracji. W WPML String Translation ustaw dla ka\u017cdego pola ACF u\u017cywanego w szablonie tryb Copy lub Translate \u2014 nigdy Don't translate. Dynamic Conditions oparte o pola ACF bywaj\u0105 wra\u017cliwe na wieloj\u0119zyczno\u015b\u0107. Zacznij testowanie od wy\u0142\u0105czenia WPML i potwierd\u017a, czy szablon dzia\u0142a bez niego, zanim zaczniesz diagnozowa\u0107 konfiguracj\u0119 WPML.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Jaka wersja PHP jest najlepsza dla Elementor Pro + ACF w 2026 roku?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"PHP 8.4 albo 8.5. Minimum oficjalnie wymagane przez Elementora to 7.4, ale 8.x daje zauwa\u017caln\u0105 przewag\u0119 wydajno\u015bciow\u0105 i lepsz\u0105 kompatybilno\u015b\u0107 z przysz\u0142ymi aktualizacjami. Testy spo\u0142eczno\u015bci potwierdzaj\u0105, \u017ce Elementor Pro dzia\u0142a stabilnie na PHP 8.5 \u2014 je\u015bli hosting na to pozwala, ustaw najwy\u017csz\u0105 dost\u0119pn\u0105 wersj\u0119 8.x.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Czy mog\u0119 zbudowa\u0107 w 100% dynamiczny header i footer z polami ACF Options Pages?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Tak \u2014 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\u015b\u0107 CTA stopki, link do regulaminu) i przypisz Location Rule do tej Options Page. W Theme Builderze utw\u00f3rz Header i Footer, podpinaj wid\u017cety do tych p\u00f3l tak samo jak do p\u00f3l CPT \u2014 w Dynamic Tags pojawi\u0105 si\u0119 jako ACF Field. Edytujesz dane w jednym miejscu, zmiany wida\u0107 wsz\u0119dzie.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n\n\n<!--TOC-DATA\n[\n  {\"id\":\"co-tak-naprawde-znaczy-100-dynamiczny-szablon-wordpress\",\"title\":\"Co tak naprawd\u0119 znaczy \u201e100% dynamiczny szablon WordPress\\\" w duecie ACF i Elementor?\"},\n  {\"id\":\"jakie-wymagania-srodowiska-musisz-spelnic-zanim-zaczniesz\",\"title\":\"Jakie wymagania \u015brodowiska musisz spe\u0142ni\u0107, zanim zaczniesz budowa\u0107 szablon?\"},\n  {\"id\":\"jak-ulozyc-strukture-danych-w-acf-zeby-szablon-byl-naprawde\",\"title\":\"Jak u\u0142o\u017cy\u0107 struktur\u0119 danych w ACF, \u017ceby szablon by\u0142 naprawd\u0119 edytowalny z panelu?\"},\n  {\"id\":\"jak-krok-po-kroku-zbudowac-single-template-w-elementor-theme\",\"title\":\"Jak krok po kroku zbudowa\u0107 Single Template w Elementor Theme Builderze?\"},\n  {\"id\":\"jak-podpinac-pola-acf-przez-dynamic-tags-zeby-nic-nie\",\"title\":\"Jak podpina\u0107 pola ACF przez Dynamic Tags, \u017ceby nic nie zosta\u0142o wpisane \u201ena sztywno\\\"?\"},\n  {\"id\":\"ktore-typy-pol-acf-sa-wspierane-natywnie-a-ktore-wymagaja\",\"title\":\"Kt\u00f3re typy p\u00f3l ACF s\u0105 wspierane natywnie, a kt\u00f3re wymagaj\u0105 obej\u015b\u0107?\"},\n  {\"id\":\"jakie-pulapki-i-konflikty-najczesciej-psuja-dynamiczny\",\"title\":\"Jakie pu\u0142apki i konflikty najcz\u0119\u015bciej psuj\u0105 dynamiczny szablon \u2014 i jak je naprawi\u0107?\"},\n  {\"id\":\"jak-wyglada-kompletny-scenariusz-wdrozenia-na-przykladzie\",\"title\":\"Jak wygl\u0105da kompletny scenariusz wdro\u017cenia na przyk\u0142adzie CPT \u201eProperty\\\"?\"},\n  {\"id\":\"jakie-jest-podsumowanie-kluczowych-informacji\",\"title\":\"Jakie jest podsumowanie kluczowych informacji?\"},\n  {\"id\":\"jakie-sa-najczesciej-zadawane-pytania-faq\",\"title\":\"Jakie s\u0105 najcz\u0119\u015bciej zadawane pytania (FAQ)?\"}\n]\n-->\n","protected":false},"excerpt":{"rendered":"<p>Czas czytania: ~14 min \u00b7 Poziom: \u015brednio zaawansowany Czy da si\u0119 zbudowa\u0107 w pe\u0142ni dynamiczny szablon Single w Elementorze i ACF bez ani jednej linijki PHP? Tak \u2013 pod warunkiem, \u017ce trzymasz si\u0119 natywnej integracji Elementor Pro z Advanced Custom Fields i akceptujesz kilka jawnych ogranicze\u0144. G\u0142\u00f3wnie repeater i flexible content. Dynamiczny szablon WordPress oparty&hellip;&nbsp;<a href=\"https:\/\/allkeystore.pl\/de\/acf-i-elementor-jak-zbudowac-w-100-dynamiczny-szablon-wordpress-bez-pisania-php\/\" rel=\"bookmark\">Mehr lesen &quot;<span class=\"screen-reader-text\">ACF und Elementor: So erstellen Sie ein dynamisches WordPress-Template in 100% ohne PHP-Kenntnisse<\/span><\/a><\/p>","protected":false},"author":22,"featured_media":113138,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"neve_meta_sidebar":"left","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":70,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"[\"title\",\"meta\",\"content\",\"tags\",\"comments\"]","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","footnotes":""},"categories":[1537],"tags":[],"class_list":["post-113124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/posts\/113124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/comments?post=113124"}],"version-history":[{"count":7,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/posts\/113124\/revisions"}],"predecessor-version":[{"id":114224,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/posts\/113124\/revisions\/114224"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/media\/113138"}],"wp:attachment":[{"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/media?parent=113124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/categories?post=113124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/allkeystore.pl\/de\/wp-json\/wp\/v2\/tags?post=113124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}