<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>acf pro Archives - Developry Plugins</title>
	<atom:link href="https://developryplugins.com/tag/acf-pro/feed/" rel="self" type="application/rss+xml" />
	<link>https://developryplugins.com/tag/acf-pro/</link>
	<description></description>
	<lastBuildDate>Mon, 24 Nov 2025 11:18:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://developryplugins.com/wp-content/uploads/2025/11/cropped-favicon-32x32.png</url>
	<title>acf pro Archives - Developry Plugins</title>
	<link>https://developryplugins.com/tag/acf-pro/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ACF Gallery Field Tutorial: Create Custom Image Galleries</title>
		<link>https://developryplugins.com/acf-gallery-field-tutorial-create-custom-image-galleries/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Sat, 25 Oct 2025 09:00:00 +0000</pubDate>
				<category><![CDATA[Advanced Custom Fields (ACF) Tutorials]]></category>
		<category><![CDATA[acf gallery]]></category>
		<category><![CDATA[acf pro]]></category>
		<category><![CDATA[gallery field]]></category>
		<category><![CDATA[image gallery]]></category>
		<category><![CDATA[lightbox]]></category>
		<guid isPermaLink="false">https://developryplugins.com/acf-gallery-field-tutorial-create-custom-image-galleries/</guid>

					<description><![CDATA[<p>ACF Gallery Fields enable multiple image uploads and management through drag-and-drop interfaces returning arrays of image data for custom gallery displays. From simple grid layouts and masonry galleries to lightbox...</p>
<p>The post <a href="https://developryplugins.com/acf-gallery-field-tutorial-create-custom-image-galleries/">ACF Gallery Field Tutorial: Create Custom Image Galleries</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>ACF Gallery Fields enable multiple image uploads and management through drag-and-drop interfaces returning arrays of image data for custom gallery displays. From simple grid layouts and masonry galleries to lightbox integrations and responsive image galleries, the Gallery field eliminates plugin dependencies. This comprehensive tutorial teaches Gallery field setup, image array manipulation, responsive grid layouts, lightbox library integration, and advanced techniques creating professional custom image galleries with ACF PRO.</p>
<h2 id="creating-gallery-field">Creating Gallery Field</h2>
<p><strong>Add Gallery Field via ACF UI</strong>:</p>
<ol type="1">
<li>Custom Fields → Field Groups</li>
<li>Add Field</li>
<li>Field Type: Gallery (ACF PRO)</li>
<li>Configuration:
<ul>
<li>Field Label: Project Gallery</li>
<li>Field Name: project_gallery</li>
<li>Return Format: Array (recommended)</li>
<li>Library: All (uploaded to post or all)</li>
<li>Min/Max Images: Set limits</li>
<li>Insert: Append/Prepend</li>
</ul>
</li>
</ol>
<p><strong>Field Configuration Options</strong>:</p>
<pre><code>Return Format:
- Array: Full image data (recommended)
- URL: Image URLs only
- ID: Attachment IDs only

Library:
- all: All images in media library
- uploadedTo: Only images uploaded to this post

Min/Max:
- Min: 1 (require at least one image)
- Max: 20 (limit to 20 images)

Insert:
- append: Add new images to end
- prepend: Add new images to beginning</code></pre>
<h2 id="basic-gallery-display">Basic Gallery Display</h2>
<p><strong>Simple Gallery Grid</strong>:</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true"></a></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;image-gallery&quot;</span>&gt;</span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true"></a>            &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true"></a>                &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true"></a>                     alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span></span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true"></a>                     title=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;title&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true"></a>            &lt;/div&gt;</span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>CSS for Grid Layout</strong>:</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode css"><code class="sourceCode css"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a><span class="fu">.image-gallery</span> {</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true"></a>    <span class="kw">display</span>: grid<span class="op">;</span></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true"></a>    <span class="kw">grid-template-columns</span>: <span class="fu">repeat(</span>auto-fill<span class="op">,</span> minmax(<span class="dv">250</span><span class="dt">px</span><span class="op">,</span> <span class="dv">1</span>fr<span class="fu">)</span>)<span class="op">;</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true"></a>    <span class="kw">gap</span>: <span class="dv">20</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true"></a>    <span class="kw">padding</span>: <span class="dv">20</span><span class="dt">px</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true"></a>}</span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true"></a></span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true"></a><span class="fu">.gallery-item</span> {</span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true"></a>    <span class="kw">position</span>: <span class="dv">relative</span><span class="op">;</span></span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true"></a>    <span class="kw">overflow</span>: <span class="dv">hidden</span><span class="op">;</span></span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true"></a>    <span class="kw">border-radius</span>: <span class="dv">8</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true"></a>}</span>
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true"></a></span>
<span id="cb3-14"><a href="#cb3-14" aria-hidden="true"></a><span class="fu">.gallery-item</span> img {</span>
<span id="cb3-15"><a href="#cb3-15" aria-hidden="true"></a>    <span class="kw">width</span>: <span class="dv">100</span><span class="dt">%</span><span class="op">;</span></span>
<span id="cb3-16"><a href="#cb3-16" aria-hidden="true"></a>    <span class="kw">height</span>: <span class="dv">250</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb3-17"><a href="#cb3-17" aria-hidden="true"></a>    <span class="kw">object-fit</span>: <span class="dv">cover</span><span class="op">;</span></span>
<span id="cb3-18"><a href="#cb3-18" aria-hidden="true"></a>    <span class="kw">transition</span>: transform <span class="dv">0.3</span><span class="dt">s</span> <span class="dv">ease</span><span class="op">;</span></span>
<span id="cb3-19"><a href="#cb3-19" aria-hidden="true"></a>}</span>
<span id="cb3-20"><a href="#cb3-20" aria-hidden="true"></a></span>
<span id="cb3-21"><a href="#cb3-21" aria-hidden="true"></a><span class="fu">.gallery-item</span><span class="in">:hover</span> img {</span>
<span id="cb3-22"><a href="#cb3-22" aria-hidden="true"></a>    <span class="kw">transform</span>: <span class="fu">scale(</span><span class="dv">1.05</span><span class="fu">)</span><span class="op">;</span></span>
<span id="cb3-23"><a href="#cb3-23" aria-hidden="true"></a>}</span></code></pre>
</div>
<h2 id="gallery-with-captions">Gallery with Captions</h2>
<p><strong>Display Images with Captions</strong>:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true"></a></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-with-captions&quot;</span>&gt;</span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true"></a>            &lt;figure <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true"></a>                &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true"></a>                     alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true"></a></span>
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">])</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true"></a>                    &lt;figcaption&gt;</span>
<span id="cb4-14"><a href="#cb4-14" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb4-15"><a href="#cb4-15" aria-hidden="true"></a>                    &lt;/figcaption&gt;</span>
<span id="cb4-16"><a href="#cb4-16" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb4-17"><a href="#cb4-17" aria-hidden="true"></a>            &lt;/figure&gt;</span>
<span id="cb4-18"><a href="#cb4-18" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb4-19"><a href="#cb4-19" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb4-20"><a href="#cb4-20" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Caption Styling</strong>:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode css"><code class="sourceCode css"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="fu">.gallery-with-captions</span> {</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a>    <span class="kw">display</span>: grid<span class="op">;</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a>    <span class="kw">grid-template-columns</span>: <span class="fu">repeat(</span>auto-fit<span class="op">,</span> minmax(<span class="dv">300</span><span class="dt">px</span><span class="op">,</span> <span class="dv">1</span>fr<span class="fu">)</span>)<span class="op">;</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a>    <span class="kw">gap</span>: <span class="dv">30</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a>}</span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a><span class="fu">.gallery-item</span> figcaption {</span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true"></a>    <span class="kw">padding</span>: <span class="dv">10</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true"></a>    <span class="kw">background</span>: <span class="cn">#f8f9fa</span><span class="op">;</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true"></a>    <span class="kw">font-size</span>: <span class="dv">14</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true"></a>    <span class="kw">color</span>: <span class="cn">#6c757d</span><span class="op">;</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true"></a>    <span class="kw">text-align</span>: <span class="dv">center</span><span class="op">;</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true"></a>}</span></code></pre>
</div>
<h2 id="lightbox-integration">Lightbox Integration</h2>
<p><strong>GLightbox Integration</strong>:</p>
<p><strong>Enqueue GLightbox</strong> (functions.php):</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_gallery_lightbox<span class="ot">()</span> {</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a>    <span class="co">// GLightbox CSS</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a>    wp_enqueue_style<span class="ot">(</span></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a>        <span class="st">&#39;glightbox&#39;</span><span class="ot">,</span></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true"></a>        <span class="st">&#39;https://cdn.jsdelivr.net/npm/glightbox/dist/css/glightbox.min.css&#39;</span><span class="ot">,</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(),</span></span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true"></a>        <span class="st">&#39;3.2.0&#39;</span></span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true"></a>    <span class="ot">);</span></span>
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true"></a></span>
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true"></a>    <span class="co">// GLightbox JS</span></span>
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true"></a>    wp_enqueue_script<span class="ot">(</span></span>
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true"></a>        <span class="st">&#39;glightbox&#39;</span><span class="ot">,</span></span>
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true"></a>        <span class="st">&#39;https://cdn.jsdelivr.net/npm/glightbox/dist/js/glightbox.min.js&#39;</span><span class="ot">,</span></span>
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(),</span></span>
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true"></a>        <span class="st">&#39;3.2.0&#39;</span><span class="ot">,</span></span>
<span id="cb6-16"><a href="#cb6-16" aria-hidden="true"></a>        <span class="kw">true</span></span>
<span id="cb6-17"><a href="#cb6-17" aria-hidden="true"></a>    <span class="ot">);</span></span>
<span id="cb6-18"><a href="#cb6-18" aria-hidden="true"></a></span>
<span id="cb6-19"><a href="#cb6-19" aria-hidden="true"></a>    <span class="co">// Initialize lightbox</span></span>
<span id="cb6-20"><a href="#cb6-20" aria-hidden="true"></a>    wp_add_inline_script<span class="ot">(</span><span class="st">&#39;glightbox&#39;</span><span class="ot">,</span> <span class="st">&#39;</span></span>
<span id="cb6-21"><a href="#cb6-21" aria-hidden="true"></a><span class="st">        document.addEventListener(&quot;DOMContentLoaded&quot;, function() {</span></span>
<span id="cb6-22"><a href="#cb6-22" aria-hidden="true"></a><span class="st">            GLightbox({</span></span>
<span id="cb6-23"><a href="#cb6-23" aria-hidden="true"></a><span class="st">                selector: &quot;.glightbox&quot;</span></span>
<span id="cb6-24"><a href="#cb6-24" aria-hidden="true"></a><span class="st">            });</span></span>
<span id="cb6-25"><a href="#cb6-25" aria-hidden="true"></a><span class="st">        });</span></span>
<span id="cb6-26"><a href="#cb6-26" aria-hidden="true"></a><span class="st">    &#39;</span><span class="ot">);</span></span>
<span id="cb6-27"><a href="#cb6-27" aria-hidden="true"></a>}</span>
<span id="cb6-28"><a href="#cb6-28" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;wp_enqueue_scripts&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_gallery_lightbox&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<p><strong>Gallery Template with Lightbox</strong>:</p>
<div class="sourceCode" id="cb7">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true"></a></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;lightbox-gallery&quot;</span>&gt;</span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true"></a>            &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;url&#39;]); ?&gt;&quot;</span></span>
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true"></a>               <span class="kw">class</span>=<span class="st">&quot;glightbox gallery-item&quot;</span></span>
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true"></a>               data-gallery=<span class="st">&quot;gallery1&quot;</span></span>
<span id="cb7-11"><a href="#cb7-11" aria-hidden="true"></a>               data-description=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;caption&#39;]); ?&gt;&quot;</span>&gt;</span>
<span id="cb7-12"><a href="#cb7-12" aria-hidden="true"></a>                &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb7-13"><a href="#cb7-13" aria-hidden="true"></a>                     alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true"></a>            &lt;/a&gt;</span>
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb7-16"><a href="#cb7-16" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb7-17"><a href="#cb7-17" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="masonry-gallery-layout">Masonry Gallery Layout</h2>
<p><strong>Masonry Grid Gallery</strong>:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;masonry-gallery&quot;</span>&gt;</span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$index</span> =&gt; <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a>            <span class="co">// Vary heights for masonry effect</span></span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a>            <span class="kw">$tall</span> = <span class="ot">(</span><span class="kw">$index</span> % <span class="dv">3</span> === <span class="dv">0</span><span class="ot">)</span> <span class="ot">?</span> <span class="st">&#39;tall&#39;</span> <span class="ot">:</span> <span class="st">&#39;&#39;</span><span class="ot">;</span></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a></span>
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true"></a>            &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item &lt;?php echo esc_attr(</span><span class="kw">$tall</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true"></a>                &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;url&#39;]); ?&gt;&quot;</span></span>
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true"></a>                   <span class="kw">class</span>=<span class="st">&quot;glightbox&quot;</span></span>
<span id="cb8-15"><a href="#cb8-15" aria-hidden="true"></a>                   data-gallery=<span class="st">&quot;masonry&quot;</span>&gt;</span>
<span id="cb8-16"><a href="#cb8-16" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb8-17"><a href="#cb8-17" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb8-18"><a href="#cb8-18" aria-hidden="true"></a>                &lt;/a&gt;</span>
<span id="cb8-19"><a href="#cb8-19" aria-hidden="true"></a>            &lt;/div&gt;</span>
<span id="cb8-20"><a href="#cb8-20" aria-hidden="true"></a></span>
<span id="cb8-21"><a href="#cb8-21" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb8-22"><a href="#cb8-22" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb8-23"><a href="#cb8-23" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Masonry CSS</strong>:</p>
<div class="sourceCode" id="cb9">
<pre class="sourceCode css"><code class="sourceCode css"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="fu">.masonry-gallery</span> {</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a>    <span class="kw">column-count</span>: <span class="dv">3</span><span class="op">;</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true"></a>    <span class="kw">column-gap</span>: <span class="dv">15</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true"></a>}</span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true"></a></span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true"></a><span class="fu">.gallery-item</span> {</span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true"></a>    <span class="kw">break-inside</span>: <span class="dv">avoid</span><span class="op">;</span></span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true"></a>    <span class="kw">margin-bottom</span>: <span class="dv">15</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true"></a>}</span>
<span id="cb9-10"><a href="#cb9-10" aria-hidden="true"></a></span>
<span id="cb9-11"><a href="#cb9-11" aria-hidden="true"></a><span class="fu">.gallery-item</span> img {</span>
<span id="cb9-12"><a href="#cb9-12" aria-hidden="true"></a>    <span class="kw">width</span>: <span class="dv">100</span><span class="dt">%</span><span class="op">;</span></span>
<span id="cb9-13"><a href="#cb9-13" aria-hidden="true"></a>    <span class="kw">display</span>: <span class="dv">block</span><span class="op">;</span></span>
<span id="cb9-14"><a href="#cb9-14" aria-hidden="true"></a>    <span class="kw">border-radius</span>: <span class="dv">8</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb9-15"><a href="#cb9-15" aria-hidden="true"></a>}</span>
<span id="cb9-16"><a href="#cb9-16" aria-hidden="true"></a></span>
<span id="cb9-17"><a href="#cb9-17" aria-hidden="true"></a><span class="fu">.gallery-item.tall</span> {</span>
<span id="cb9-18"><a href="#cb9-18" aria-hidden="true"></a>    <span class="kw">height</span>: <span class="dv">400</span><span class="dt">px</span><span class="op">;</span></span>
<span id="cb9-19"><a href="#cb9-19" aria-hidden="true"></a>}</span>
<span id="cb9-20"><a href="#cb9-20" aria-hidden="true"></a></span>
<span id="cb9-21"><a href="#cb9-21" aria-hidden="true"></a><span class="im">@media</span> (<span class="kw">max-width</span>: <span class="dv">768</span><span class="dt">px</span>) {</span>
<span id="cb9-22"><a href="#cb9-22" aria-hidden="true"></a>    <span class="fu">.masonry-gallery</span> {</span>
<span id="cb9-23"><a href="#cb9-23" aria-hidden="true"></a>        <span class="kw">column-count</span>: <span class="dv">2</span><span class="op">;</span></span>
<span id="cb9-24"><a href="#cb9-24" aria-hidden="true"></a>    }</span>
<span id="cb9-25"><a href="#cb9-25" aria-hidden="true"></a>}</span>
<span id="cb9-26"><a href="#cb9-26" aria-hidden="true"></a></span>
<span id="cb9-27"><a href="#cb9-27" aria-hidden="true"></a><span class="im">@media</span> (<span class="kw">max-width</span>: <span class="dv">480</span><span class="dt">px</span>) {</span>
<span id="cb9-28"><a href="#cb9-28" aria-hidden="true"></a>    <span class="fu">.masonry-gallery</span> {</span>
<span id="cb9-29"><a href="#cb9-29" aria-hidden="true"></a>        <span class="kw">column-count</span>: <span class="dv">1</span><span class="op">;</span></span>
<span id="cb9-30"><a href="#cb9-30" aria-hidden="true"></a>    }</span>
<span id="cb9-31"><a href="#cb9-31" aria-hidden="true"></a>}</span></code></pre>
</div>
<h2 id="slider-gallery">Slider Gallery</h2>
<p><strong>Image Slider with Navigation</strong>:</p>
<div class="sourceCode" id="cb10">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true"></a></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;slider-gallery&quot;</span>&gt;</span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;slider-container&quot;</span>&gt;</span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$index</span> =&gt; <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;slide &lt;?php echo (</span><span class="kw">$index</span><span class="st"> === 0) ? &#39;active&#39; : &#39;&#39;; ?&gt;&quot;</span></span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true"></a>                     data-slide=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$index</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb10-13"><a href="#cb10-13" aria-hidden="true"></a></span>
<span id="cb10-14"><a href="#cb10-14" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">])</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb10-15"><a href="#cb10-15" aria-hidden="true"></a>                        &lt;div <span class="kw">class</span>=<span class="st">&quot;slide-caption&quot;</span>&gt;</span>
<span id="cb10-16"><a href="#cb10-16" aria-hidden="true"></a>                            &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb10-17"><a href="#cb10-17" aria-hidden="true"></a>                        &lt;/div&gt;</span>
<span id="cb10-18"><a href="#cb10-18" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb10-19"><a href="#cb10-19" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb10-20"><a href="#cb10-20" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb10-21"><a href="#cb10-21" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb10-22"><a href="#cb10-22" aria-hidden="true"></a></span>
<span id="cb10-23"><a href="#cb10-23" aria-hidden="true"></a>        &lt;button <span class="kw">class</span>=<span class="st">&quot;slider-prev&quot;</span> aria-label=<span class="st">&quot;Previous image&quot;</span>&gt;‹&lt;/button&gt;</span>
<span id="cb10-24"><a href="#cb10-24" aria-hidden="true"></a>        &lt;button <span class="kw">class</span>=<span class="st">&quot;slider-next&quot;</span> aria-label=<span class="st">&quot;Next image&quot;</span>&gt;›&lt;/button&gt;</span>
<span id="cb10-25"><a href="#cb10-25" aria-hidden="true"></a></span>
<span id="cb10-26"><a href="#cb10-26" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;slider-dots&quot;</span>&gt;</span>
<span id="cb10-27"><a href="#cb10-27" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$index</span> =&gt; <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb10-28"><a href="#cb10-28" aria-hidden="true"></a>                &lt;button <span class="kw">class</span>=<span class="st">&quot;dot &lt;?php echo (</span><span class="kw">$index</span><span class="st"> === 0) ? &#39;active&#39; : &#39;&#39;; ?&gt;&quot;</span></span>
<span id="cb10-29"><a href="#cb10-29" aria-hidden="true"></a>                        data-slide=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$index</span><span class="st">); ?&gt;&quot;</span></span>
<span id="cb10-30"><a href="#cb10-30" aria-hidden="true"></a>                        aria-label=<span class="st">&quot;Go to slide &lt;?php echo (</span><span class="kw">$index</span><span class="st"> + 1); ?&gt;&quot;</span>&gt;&lt;/button&gt;</span>
<span id="cb10-31"><a href="#cb10-31" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb10-32"><a href="#cb10-32" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb10-33"><a href="#cb10-33" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb10-34"><a href="#cb10-34" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Slider JavaScript</strong>:</p>
<div class="sourceCode" id="cb11">
<pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="bu">document</span><span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;DOMContentLoaded&quot;</span><span class="op">,</span> <span class="kw">function</span> () {</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a>    <span class="kw">const</span> slides <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.slide&quot;</span>)<span class="op">;</span></span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true"></a>    <span class="kw">const</span> dots <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.dot&quot;</span>)<span class="op">;</span></span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true"></a>    <span class="kw">const</span> prevBtn <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">querySelector</span>(<span class="st">&quot;.slider-prev&quot;</span>)<span class="op">;</span></span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true"></a>    <span class="kw">const</span> nextBtn <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">querySelector</span>(<span class="st">&quot;.slider-next&quot;</span>)<span class="op">;</span></span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true"></a>    <span class="kw">let</span> currentSlide <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true"></a></span>
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true"></a>    <span class="kw">function</span> <span class="fu">showSlide</span>(n) {</span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true"></a>        slides<span class="op">.</span><span class="fu">forEach</span>((slide) <span class="kw">=&gt;</span> slide<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">remove</span>(<span class="st">&quot;active&quot;</span>))<span class="op">;</span></span>
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true"></a>        dots<span class="op">.</span><span class="fu">forEach</span>((dot) <span class="kw">=&gt;</span> dot<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">remove</span>(<span class="st">&quot;active&quot;</span>))<span class="op">;</span></span>
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true"></a></span>
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true"></a>        <span class="cf">if</span> (n <span class="op">&gt;=</span> slides<span class="op">.</span><span class="at">length</span>) currentSlide <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb11-13"><a href="#cb11-13" aria-hidden="true"></a>        <span class="cf">if</span> (n <span class="op">&lt;</span> <span class="dv">0</span>) currentSlide <span class="op">=</span> slides<span class="op">.</span><span class="at">length</span> <span class="op">-</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb11-14"><a href="#cb11-14" aria-hidden="true"></a></span>
<span id="cb11-15"><a href="#cb11-15" aria-hidden="true"></a>        slides[currentSlide]<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;active&quot;</span>)<span class="op">;</span></span>
<span id="cb11-16"><a href="#cb11-16" aria-hidden="true"></a>        dots[currentSlide]<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;active&quot;</span>)<span class="op">;</span></span>
<span id="cb11-17"><a href="#cb11-17" aria-hidden="true"></a>    }</span>
<span id="cb11-18"><a href="#cb11-18" aria-hidden="true"></a></span>
<span id="cb11-19"><a href="#cb11-19" aria-hidden="true"></a>    prevBtn<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;click&quot;</span><span class="op">,</span> () <span class="kw">=&gt;</span> {</span>
<span id="cb11-20"><a href="#cb11-20" aria-hidden="true"></a>        currentSlide<span class="op">--;</span></span>
<span id="cb11-21"><a href="#cb11-21" aria-hidden="true"></a>        <span class="fu">showSlide</span>(currentSlide)<span class="op">;</span></span>
<span id="cb11-22"><a href="#cb11-22" aria-hidden="true"></a>    })<span class="op">;</span></span>
<span id="cb11-23"><a href="#cb11-23" aria-hidden="true"></a></span>
<span id="cb11-24"><a href="#cb11-24" aria-hidden="true"></a>    nextBtn<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;click&quot;</span><span class="op">,</span> () <span class="kw">=&gt;</span> {</span>
<span id="cb11-25"><a href="#cb11-25" aria-hidden="true"></a>        currentSlide<span class="op">++;</span></span>
<span id="cb11-26"><a href="#cb11-26" aria-hidden="true"></a>        <span class="fu">showSlide</span>(currentSlide)<span class="op">;</span></span>
<span id="cb11-27"><a href="#cb11-27" aria-hidden="true"></a>    })<span class="op">;</span></span>
<span id="cb11-28"><a href="#cb11-28" aria-hidden="true"></a></span>
<span id="cb11-29"><a href="#cb11-29" aria-hidden="true"></a>    dots<span class="op">.</span><span class="fu">forEach</span>((dot<span class="op">,</span> index) <span class="kw">=&gt;</span> {</span>
<span id="cb11-30"><a href="#cb11-30" aria-hidden="true"></a>        dot<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;click&quot;</span><span class="op">,</span> () <span class="kw">=&gt;</span> {</span>
<span id="cb11-31"><a href="#cb11-31" aria-hidden="true"></a>            currentSlide <span class="op">=</span> index<span class="op">;</span></span>
<span id="cb11-32"><a href="#cb11-32" aria-hidden="true"></a>            <span class="fu">showSlide</span>(currentSlide)<span class="op">;</span></span>
<span id="cb11-33"><a href="#cb11-33" aria-hidden="true"></a>        })<span class="op">;</span></span>
<span id="cb11-34"><a href="#cb11-34" aria-hidden="true"></a>    })<span class="op">;</span></span>
<span id="cb11-35"><a href="#cb11-35" aria-hidden="true"></a>})<span class="op">;</span></span></code></pre>
</div>
<h2 id="responsive-image-sizes">Responsive Image Sizes</h2>
<p><strong>Use Appropriate Image Sizes</strong>:</p>
<div class="sourceCode" id="cb12">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true"></a></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;responsive-gallery&quot;</span>&gt;</span>
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true"></a>            &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb12-9"><a href="#cb12-9" aria-hidden="true"></a>                &lt;picture&gt;</span>
<span id="cb12-10"><a href="#cb12-10" aria-hidden="true"></a>                    &lt;!-- Mobile: thumbnail --&gt;</span>
<span id="cb12-11"><a href="#cb12-11" aria-hidden="true"></a>                    &lt;source media=<span class="st">&quot;(max-width: 480px)&quot;</span></span>
<span id="cb12-12"><a href="#cb12-12" aria-hidden="true"></a>                            srcset=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;thumbnail&#39;]); ?&gt;&quot;</span>&gt;</span>
<span id="cb12-13"><a href="#cb12-13" aria-hidden="true"></a></span>
<span id="cb12-14"><a href="#cb12-14" aria-hidden="true"></a>                    &lt;!-- Tablet: medium --&gt;</span>
<span id="cb12-15"><a href="#cb12-15" aria-hidden="true"></a>                    &lt;source media=<span class="st">&quot;(max-width: 768px)&quot;</span></span>
<span id="cb12-16"><a href="#cb12-16" aria-hidden="true"></a>                            srcset=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span>&gt;</span>
<span id="cb12-17"><a href="#cb12-17" aria-hidden="true"></a></span>
<span id="cb12-18"><a href="#cb12-18" aria-hidden="true"></a>                    &lt;!-- Desktop: large --&gt;</span>
<span id="cb12-19"><a href="#cb12-19" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb12-20"><a href="#cb12-20" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb12-21"><a href="#cb12-21" aria-hidden="true"></a>                &lt;/picture&gt;</span>
<span id="cb12-22"><a href="#cb12-22" aria-hidden="true"></a>            &lt;/div&gt;</span>
<span id="cb12-23"><a href="#cb12-23" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb12-24"><a href="#cb12-24" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb12-25"><a href="#cb12-25" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="gallery-with-thumbnails">Gallery with Thumbnails</h2>
<p><strong>Main Image with Thumbnail Navigation</strong>:</p>
<div class="sourceCode" id="cb13">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true"></a></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-with-thumbs&quot;</span>&gt;</span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true"></a>        &lt;!-- Main Display --&gt;</span>
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;main-image&quot;</span>&gt;</span>
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true"></a>            &lt;img id=<span class="st">&quot;main-gallery-img&quot;</span></span>
<span id="cb13-10"><a href="#cb13-10" aria-hidden="true"></a>                 src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$images[0]</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb13-11"><a href="#cb13-11" aria-hidden="true"></a>                 alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$images[0]</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb13-12"><a href="#cb13-12" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb13-13"><a href="#cb13-13" aria-hidden="true"></a></span>
<span id="cb13-14"><a href="#cb13-14" aria-hidden="true"></a>        &lt;!-- Thumbnails --&gt;</span>
<span id="cb13-15"><a href="#cb13-15" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;thumbnail-strip&quot;</span>&gt;</span>
<span id="cb13-16"><a href="#cb13-16" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$index</span> =&gt; <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb13-17"><a href="#cb13-17" aria-hidden="true"></a>                &lt;button <span class="kw">class</span>=<span class="st">&quot;thumb &lt;?php echo (</span><span class="kw">$index</span><span class="st"> === 0) ? &#39;active&#39; : &#39;&#39;; ?&gt;&quot;</span></span>
<span id="cb13-18"><a href="#cb13-18" aria-hidden="true"></a>                        data-full=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;large&#39;]); ?&gt;&quot;</span></span>
<span id="cb13-19"><a href="#cb13-19" aria-hidden="true"></a>                        data-alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span>&gt;</span>
<span id="cb13-20"><a href="#cb13-20" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;thumbnail&#39;]); ?&gt;&quot;</span></span>
<span id="cb13-21"><a href="#cb13-21" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb13-22"><a href="#cb13-22" aria-hidden="true"></a>                &lt;/button&gt;</span>
<span id="cb13-23"><a href="#cb13-23" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb13-24"><a href="#cb13-24" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb13-25"><a href="#cb13-25" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb13-26"><a href="#cb13-26" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Thumbnail Navigation JavaScript</strong>:</p>
<div class="sourceCode" id="cb14">
<pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true"></a><span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.thumb&quot;</span>)<span class="op">.</span><span class="fu">forEach</span>(<span class="kw">function</span> (thumb) {</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true"></a>    thumb<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;click&quot;</span><span class="op">,</span> <span class="kw">function</span> () {</span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true"></a>        <span class="kw">const</span> fullSrc <span class="op">=</span> <span class="kw">this</span><span class="op">.</span><span class="fu">getAttribute</span>(<span class="st">&quot;data-full&quot;</span>)<span class="op">;</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true"></a>        <span class="kw">const</span> altText <span class="op">=</span> <span class="kw">this</span><span class="op">.</span><span class="fu">getAttribute</span>(<span class="st">&quot;data-alt&quot;</span>)<span class="op">;</span></span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true"></a>        <span class="kw">const</span> mainImg <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">getElementById</span>(<span class="st">&quot;main-gallery-img&quot;</span>)<span class="op">;</span></span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true"></a></span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true"></a>        mainImg<span class="op">.</span><span class="at">src</span> <span class="op">=</span> fullSrc<span class="op">;</span></span>
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true"></a>        mainImg<span class="op">.</span><span class="at">alt</span> <span class="op">=</span> altText<span class="op">;</span></span>
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true"></a></span>
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true"></a>        <span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.thumb&quot;</span>)<span class="op">.</span><span class="fu">forEach</span>((t) <span class="kw">=&gt;</span> t<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">remove</span>(<span class="st">&quot;active&quot;</span>))<span class="op">;</span></span>
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true"></a>        <span class="kw">this</span><span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;active&quot;</span>)<span class="op">;</span></span>
<span id="cb14-12"><a href="#cb14-12" aria-hidden="true"></a>    })<span class="op">;</span></span>
<span id="cb14-13"><a href="#cb14-13" aria-hidden="true"></a>})<span class="op">;</span></span></code></pre>
</div>
<h2 id="lazy-loading-gallery">Lazy Loading Gallery</h2>
<p><strong>Performance Optimization</strong>:</p>
<div class="sourceCode" id="cb15">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true"></a></span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;lazy-gallery&quot;</span>&gt;</span>
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$index</span> =&gt; <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true"></a>            <span class="co">// Load first 3 images immediately, lazy load rest</span></span>
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true"></a>            <span class="kw">$loading</span> = <span class="ot">(</span><span class="kw">$index</span> &lt; <span class="dv">3</span><span class="ot">)</span> <span class="ot">?</span> <span class="st">&#39;eager&#39;</span> <span class="ot">:</span> <span class="st">&#39;lazy&#39;</span><span class="ot">;</span></span>
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true"></a></span>
<span id="cb15-12"><a href="#cb15-12" aria-hidden="true"></a>            &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb15-13"><a href="#cb15-13" aria-hidden="true"></a>                &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb15-14"><a href="#cb15-14" aria-hidden="true"></a>                     alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span></span>
<span id="cb15-15"><a href="#cb15-15" aria-hidden="true"></a>                     loading=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$loading</span><span class="st">); ?&gt;&quot;</span></span>
<span id="cb15-16"><a href="#cb15-16" aria-hidden="true"></a>                     width=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium-width&#39;]); ?&gt;&quot;</span></span>
<span id="cb15-17"><a href="#cb15-17" aria-hidden="true"></a>                     height=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium-height&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb15-18"><a href="#cb15-18" aria-hidden="true"></a>            &lt;/div&gt;</span>
<span id="cb15-19"><a href="#cb15-19" aria-hidden="true"></a></span>
<span id="cb15-20"><a href="#cb15-20" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb15-21"><a href="#cb15-21" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb15-22"><a href="#cb15-22" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="filter-gallery-by-category">Filter Gallery by Category</h2>
<p><strong>Gallery with Category Filters</strong>:</p>
<div class="sourceCode" id="cb16">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a></span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;filtered-gallery&quot;</span>&gt;</span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true"></a>        &lt;!-- Category Filters --&gt;</span>
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-filters&quot;</span>&gt;</span>
<span id="cb16-9"><a href="#cb16-9" aria-hidden="true"></a>            &lt;button <span class="kw">class</span>=<span class="st">&quot;filter-btn active&quot;</span> data-filter=<span class="st">&quot;all&quot;</span>&gt;All&lt;/button&gt;</span>
<span id="cb16-10"><a href="#cb16-10" aria-hidden="true"></a>            &lt;button <span class="kw">class</span>=<span class="st">&quot;filter-btn&quot;</span> data-filter=<span class="st">&quot;product&quot;</span>&gt;Product&lt;/button&gt;</span>
<span id="cb16-11"><a href="#cb16-11" aria-hidden="true"></a>            &lt;button <span class="kw">class</span>=<span class="st">&quot;filter-btn&quot;</span> data-filter=<span class="st">&quot;lifestyle&quot;</span>&gt;Lifestyle&lt;/button&gt;</span>
<span id="cb16-12"><a href="#cb16-12" aria-hidden="true"></a>            &lt;button <span class="kw">class</span>=<span class="st">&quot;filter-btn&quot;</span> data-filter=<span class="st">&quot;detail&quot;</span>&gt;Detail&lt;/button&gt;</span>
<span id="cb16-13"><a href="#cb16-13" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb16-14"><a href="#cb16-14" aria-hidden="true"></a></span>
<span id="cb16-15"><a href="#cb16-15" aria-hidden="true"></a>        &lt;!-- Gallery Items --&gt;</span>
<span id="cb16-16"><a href="#cb16-16" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-grid&quot;</span>&gt;</span>
<span id="cb16-17"><a href="#cb16-17" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb16-18"><a href="#cb16-18" aria-hidden="true"></a>                <span class="co">// Get category from image description</span></span>
<span id="cb16-19"><a href="#cb16-19" aria-hidden="true"></a>                <span class="kw">$category</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;description&#39;</span><span class="ot">]</span> <span class="ot">?:</span> <span class="st">&#39;all&#39;</span><span class="ot">;</span></span>
<span id="cb16-20"><a href="#cb16-20" aria-hidden="true"></a>                <span class="kw">?&gt;</span></span>
<span id="cb16-21"><a href="#cb16-21" aria-hidden="true"></a></span>
<span id="cb16-22"><a href="#cb16-22" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span> data-category=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$category</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb16-23"><a href="#cb16-23" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb16-24"><a href="#cb16-24" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb16-25"><a href="#cb16-25" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb16-26"><a href="#cb16-26" aria-hidden="true"></a></span>
<span id="cb16-27"><a href="#cb16-27" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb16-28"><a href="#cb16-28" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb16-29"><a href="#cb16-29" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb16-30"><a href="#cb16-30" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Filter JavaScript</strong>:</p>
<div class="sourceCode" id="cb17">
<pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true"></a><span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.filter-btn&quot;</span>)<span class="op">.</span><span class="fu">forEach</span>(<span class="kw">function</span> (btn) {</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true"></a>    btn<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&quot;click&quot;</span><span class="op">,</span> <span class="kw">function</span> () {</span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true"></a>        <span class="kw">const</span> filter <span class="op">=</span> <span class="kw">this</span><span class="op">.</span><span class="fu">getAttribute</span>(<span class="st">&quot;data-filter&quot;</span>)<span class="op">;</span></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true"></a></span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true"></a>        <span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.filter-btn&quot;</span>)<span class="op">.</span><span class="fu">forEach</span>((b) <span class="kw">=&gt;</span> b<span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">remove</span>(<span class="st">&quot;active&quot;</span>))<span class="op">;</span></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true"></a>        <span class="kw">this</span><span class="op">.</span><span class="at">classList</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;active&quot;</span>)<span class="op">;</span></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true"></a></span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true"></a>        <span class="bu">document</span><span class="op">.</span><span class="fu">querySelectorAll</span>(<span class="st">&quot;.gallery-item&quot;</span>)<span class="op">.</span><span class="fu">forEach</span>(<span class="kw">function</span> (item) {</span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true"></a>            <span class="kw">const</span> category <span class="op">=</span> item<span class="op">.</span><span class="fu">getAttribute</span>(<span class="st">&quot;data-category&quot;</span>)<span class="op">;</span></span>
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true"></a></span>
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true"></a>            <span class="cf">if</span> (filter <span class="op">===</span> <span class="st">&quot;all&quot;</span> <span class="op">||</span> category <span class="op">===</span> filter) {</span>
<span id="cb17-12"><a href="#cb17-12" aria-hidden="true"></a>                item<span class="op">.</span><span class="at">style</span><span class="op">.</span><span class="at">display</span> <span class="op">=</span> <span class="st">&quot;block&quot;</span><span class="op">;</span></span>
<span id="cb17-13"><a href="#cb17-13" aria-hidden="true"></a>            } <span class="cf">else</span> {</span>
<span id="cb17-14"><a href="#cb17-14" aria-hidden="true"></a>                item<span class="op">.</span><span class="at">style</span><span class="op">.</span><span class="at">display</span> <span class="op">=</span> <span class="st">&quot;none&quot;</span><span class="op">;</span></span>
<span id="cb17-15"><a href="#cb17-15" aria-hidden="true"></a>            }</span>
<span id="cb17-16"><a href="#cb17-16" aria-hidden="true"></a>        })<span class="op">;</span></span>
<span id="cb17-17"><a href="#cb17-17" aria-hidden="true"></a>    })<span class="op">;</span></span>
<span id="cb17-18"><a href="#cb17-18" aria-hidden="true"></a>})<span class="op">;</span></span></code></pre>
</div>
<h2 id="gallery-image-count">Gallery Image Count</h2>
<p><strong>Display Image Count</strong>:</p>
<div class="sourceCode" id="cb18">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true"></a></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true"></a>    <span class="kw">$image_count</span> = <span class="fu">count</span><span class="ot">(</span><span class="kw">$images</span><span class="ot">);</span></span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true"></a>    <span class="kw">?&gt;</span></span>
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true"></a></span>
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-section&quot;</span>&gt;</span>
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-header&quot;</span>&gt;</span>
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true"></a>            &lt;h2&gt;Project Gallery&lt;/h2&gt;</span>
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true"></a>            &lt;p <span class="kw">class</span>=<span class="st">&quot;image-count&quot;</span>&gt;</span>
<span id="cb18-12"><a href="#cb18-12" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$image_count</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb18-13"><a href="#cb18-13" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">echo</span> <span class="ot">(</span><span class="kw">$image_count</span> === <span class="dv">1</span><span class="ot">)</span> <span class="ot">?</span> <span class="st">&#39;Image&#39;</span> <span class="ot">:</span> <span class="st">&#39;Images&#39;</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb18-14"><a href="#cb18-14" aria-hidden="true"></a>            &lt;/p&gt;</span>
<span id="cb18-15"><a href="#cb18-15" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb18-16"><a href="#cb18-16" aria-hidden="true"></a></span>
<span id="cb18-17"><a href="#cb18-17" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;image-gallery&quot;</span>&gt;</span>
<span id="cb18-18"><a href="#cb18-18" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb18-19"><a href="#cb18-19" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb18-20"><a href="#cb18-20" aria-hidden="true"></a>                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb18-21"><a href="#cb18-21" aria-hidden="true"></a>                         alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb18-22"><a href="#cb18-22" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb18-23"><a href="#cb18-23" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb18-24"><a href="#cb18-24" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb18-25"><a href="#cb18-25" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb18-26"><a href="#cb18-26" aria-hidden="true"></a></span>
<span id="cb18-27"><a href="#cb18-27" aria-hidden="true"></a>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="accessing-image-metadata">Accessing Image Metadata</h2>
<p><strong>Full Image Data Available</strong>:</p>
<div class="sourceCode" id="cb19">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true"></a></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> :</span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true"></a>    <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> :</span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true"></a>        <span class="co">// Available image data:</span></span>
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true"></a>        <span class="kw">$id</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;ID&#39;</span><span class="ot">];</span></span>
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true"></a>        <span class="kw">$title</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">];</span></span>
<span id="cb19-9"><a href="#cb19-9" aria-hidden="true"></a>        <span class="kw">$alt</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;alt&#39;</span><span class="ot">];</span></span>
<span id="cb19-10"><a href="#cb19-10" aria-hidden="true"></a>        <span class="kw">$caption</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">];</span></span>
<span id="cb19-11"><a href="#cb19-11" aria-hidden="true"></a>        <span class="kw">$description</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;description&#39;</span><span class="ot">];</span></span>
<span id="cb19-12"><a href="#cb19-12" aria-hidden="true"></a>        <span class="kw">$url</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;url&#39;</span><span class="ot">];</span></span>
<span id="cb19-13"><a href="#cb19-13" aria-hidden="true"></a>        <span class="kw">$width</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;width&#39;</span><span class="ot">];</span></span>
<span id="cb19-14"><a href="#cb19-14" aria-hidden="true"></a>        <span class="kw">$height</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;height&#39;</span><span class="ot">];</span></span>
<span id="cb19-15"><a href="#cb19-15" aria-hidden="true"></a></span>
<span id="cb19-16"><a href="#cb19-16" aria-hidden="true"></a>        <span class="co">// Image sizes</span></span>
<span id="cb19-17"><a href="#cb19-17" aria-hidden="true"></a>        <span class="kw">$thumbnail</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;thumbnail&#39;</span><span class="ot">];</span></span>
<span id="cb19-18"><a href="#cb19-18" aria-hidden="true"></a>        <span class="kw">$medium</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;medium&#39;</span><span class="ot">];</span></span>
<span id="cb19-19"><a href="#cb19-19" aria-hidden="true"></a>        <span class="kw">$large</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;large&#39;</span><span class="ot">];</span></span>
<span id="cb19-20"><a href="#cb19-20" aria-hidden="true"></a>        <span class="kw">$full</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;full&#39;</span><span class="ot">];</span></span>
<span id="cb19-21"><a href="#cb19-21" aria-hidden="true"></a></span>
<span id="cb19-22"><a href="#cb19-22" aria-hidden="true"></a>        <span class="co">// Size dimensions</span></span>
<span id="cb19-23"><a href="#cb19-23" aria-hidden="true"></a>        <span class="kw">$thumb_width</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;thumbnail-width&#39;</span><span class="ot">];</span></span>
<span id="cb19-24"><a href="#cb19-24" aria-hidden="true"></a>        <span class="kw">$thumb_height</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;thumbnail-height&#39;</span><span class="ot">];</span></span>
<span id="cb19-25"><a href="#cb19-25" aria-hidden="true"></a>    <span class="kw">endfor</span>each<span class="ot">;</span></span>
<span id="cb19-26"><a href="#cb19-26" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb19-27"><a href="#cb19-27" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="programmatic-gallery-registration">Programmatic Gallery Registration</h2>
<p><strong>Register Gallery Field via PHP</strong>:</p>
<div class="sourceCode" id="cb20">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_register_gallery_field<span class="ot">()</span> {</span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true"></a>    <span class="kw">if</span> <span class="ot">(</span><span class="fu">function_exists</span><span class="ot">(</span><span class="st">&#39;acf_add_local_field_group&#39;</span><span class="ot">))</span> {</span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true"></a>        acf_add_local_field_group<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-4"><a href="#cb20-4" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span>    =&gt; <span class="st">&#39;group_project_gallery&#39;</span><span class="ot">,</span></span>
<span id="cb20-5"><a href="#cb20-5" aria-hidden="true"></a>            <span class="st">&#39;title&#39;</span>  =&gt; <span class="st">&#39;Project Gallery&#39;</span><span class="ot">,</span></span>
<span id="cb20-6"><a href="#cb20-6" aria-hidden="true"></a>            <span class="st">&#39;fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-7"><a href="#cb20-7" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-8"><a href="#cb20-8" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span>    =&gt; <span class="st">&#39;field_project_gallery&#39;</span><span class="ot">,</span></span>
<span id="cb20-9"><a href="#cb20-9" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span>  =&gt; <span class="st">&#39;Gallery Images&#39;</span><span class="ot">,</span></span>
<span id="cb20-10"><a href="#cb20-10" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span>   =&gt; <span class="st">&#39;project_gallery&#39;</span><span class="ot">,</span></span>
<span id="cb20-11"><a href="#cb20-11" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span>   =&gt; <span class="st">&#39;gallery&#39;</span><span class="ot">,</span></span>
<span id="cb20-12"><a href="#cb20-12" aria-hidden="true"></a>                    <span class="st">&#39;return_format&#39;</span> =&gt; <span class="st">&#39;array&#39;</span><span class="ot">,</span></span>
<span id="cb20-13"><a href="#cb20-13" aria-hidden="true"></a>                    <span class="st">&#39;library&#39;</span> =&gt; <span class="st">&#39;all&#39;</span><span class="ot">,</span></span>
<span id="cb20-14"><a href="#cb20-14" aria-hidden="true"></a>                    <span class="st">&#39;min&#39;</span>    =&gt; <span class="dv">1</span><span class="ot">,</span></span>
<span id="cb20-15"><a href="#cb20-15" aria-hidden="true"></a>                    <span class="st">&#39;max&#39;</span>    =&gt; <span class="dv">50</span><span class="ot">,</span></span>
<span id="cb20-16"><a href="#cb20-16" aria-hidden="true"></a>                    <span class="st">&#39;insert&#39;</span> =&gt; <span class="st">&#39;append&#39;</span><span class="ot">,</span></span>
<span id="cb20-17"><a href="#cb20-17" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb20-18"><a href="#cb20-18" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb20-19"><a href="#cb20-19" aria-hidden="true"></a>            <span class="st">&#39;location&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-20"><a href="#cb20-20" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-21"><a href="#cb20-21" aria-hidden="true"></a>                    <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-22"><a href="#cb20-22" aria-hidden="true"></a>                        <span class="st">&#39;param&#39;</span>    =&gt; <span class="st">&#39;post_type&#39;</span><span class="ot">,</span></span>
<span id="cb20-23"><a href="#cb20-23" aria-hidden="true"></a>                        <span class="st">&#39;operator&#39;</span> =&gt; <span class="st">&#39;==&#39;</span><span class="ot">,</span></span>
<span id="cb20-24"><a href="#cb20-24" aria-hidden="true"></a>                        <span class="st">&#39;value&#39;</span>    =&gt; <span class="st">&#39;portfolio&#39;</span><span class="ot">,</span></span>
<span id="cb20-25"><a href="#cb20-25" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb20-26"><a href="#cb20-26" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb20-27"><a href="#cb20-27" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb20-28"><a href="#cb20-28" aria-hidden="true"></a>        <span class="ot">));</span></span>
<span id="cb20-29"><a href="#cb20-29" aria-hidden="true"></a>    }</span>
<span id="cb20-30"><a href="#cb20-30" aria-hidden="true"></a>}</span>
<span id="cb20-31"><a href="#cb20-31" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;acf/init&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_register_gallery_field&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="best-practices">Best Practices</h2>
<p><strong>Always Check for Images</strong>:</p>
<div class="sourceCode" id="cb21">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true"></a><span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">);</span></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true"></a></span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true"></a><span class="co">// Good - check before loop</span></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> {</span>
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true"></a>    <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> {</span>
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true"></a>        <span class="co">// Display images</span></span>
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true"></a>    }</span>
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true"></a>}</span>
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true"></a></span>
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true"></a><span class="co">// Bad - no check, may cause errors</span></span>
<span id="cb21-12"><a href="#cb21-12" aria-hidden="true"></a><span class="kw">foreach</span> <span class="ot">(</span>get_field<span class="ot">(</span><span class="st">&#39;project_gallery&#39;</span><span class="ot">)</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> {</span>
<span id="cb21-13"><a href="#cb21-13" aria-hidden="true"></a>    <span class="co">// Display images</span></span>
<span id="cb21-14"><a href="#cb21-14" aria-hidden="true"></a>}</span>
<span id="cb21-15"><a href="#cb21-15" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Optimize Image Sizes</strong>:</p>
<div class="sourceCode" id="cb22">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true"></a><span class="co">// Use appropriate size for context</span></span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true"></a><span class="kw">$thumbnail</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;thumbnail&#39;</span><span class="ot">];</span> <span class="co">// 150x150</span></span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true"></a><span class="kw">$medium</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;medium&#39;</span><span class="ot">];</span>       <span class="co">// 300x300</span></span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true"></a><span class="kw">$large</span> = <span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;sizes&#39;</span><span class="ot">][</span><span class="st">&#39;large&#39;</span><span class="ot">];</span>         <span class="co">// 1024x1024</span></span></code></pre>
</div>
<p><strong>Escape All Output</strong>:</p>
<div class="sourceCode" id="cb23">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_url<span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;url&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_attr<span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;alt&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$image</span><span class="ot">[</span><span class="st">&#39;caption&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="conclusion">Conclusion</h2>
<p>ACF Gallery Fields enable custom image galleries through drag-and-drop interfaces returning comprehensive image data arrays for flexible display options. Implement responsive grid layouts with CSS Grid, integrate lightbox libraries like GLightbox for full-screen viewing, create masonry galleries with column-count, build image sliders with JavaScript navigation, and optimize performance with lazy loading attributes. Gallery fields eliminate gallery plugin dependencies while providing complete control over gallery styling, functionality, and responsive behavior.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://www.advancedcustomfields.com/resources/gallery/">ACF Gallery Field Documentation</a></li>
<li><a href="https://biati-digital.github.io/glightbox/">GLightbox Library</a></li>
<li><a href="https://css-tricks.com/snippets/css/complete-guide-grid/">CSS Grid Layout Guide</a></li>
<li><a href="https://web.dev/browser-level-image-lazy-loading/">Native Lazy Loading</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images">Responsive Images</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Gallery configurations need backup protection. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> backs up your WordPress gallery field settings and image data automatically. Safeguard your custom galleries—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/acf-gallery-field-tutorial-create-custom-image-galleries/">ACF Gallery Field Tutorial: Create Custom Image Galleries</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ACF Flexible Content Layouts: Create Modular Page Builders</title>
		<link>https://developryplugins.com/acf-flexible-content-layouts-create-modular-page-builders/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Mon, 20 Oct 2025 09:00:00 +0000</pubDate>
				<category><![CDATA[Advanced Custom Fields (ACF) Tutorials]]></category>
		<category><![CDATA[acf layouts]]></category>
		<category><![CDATA[acf pro]]></category>
		<category><![CDATA[flexible content]]></category>
		<category><![CDATA[modular design]]></category>
		<category><![CDATA[page builder]]></category>
		<guid isPermaLink="false">https://developryplugins.com/acf-flexible-content-layouts-create-modular-page-builders/</guid>

					<description><![CDATA[<p>ACF Flexible Content Fields create drag-and-drop page builders through multiple layout types within a single field allowing editors complete layout control. From text blocks and image galleries to testimonial carousels...</p>
<p>The post <a href="https://developryplugins.com/acf-flexible-content-layouts-create-modular-page-builders/">ACF Flexible Content Layouts: Create Modular Page Builders</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>ACF Flexible Content Fields create drag-and-drop page builders through multiple layout types within a single field allowing editors complete layout control. From text blocks and image galleries to testimonial carousels and call-to-action sections, flexible content eliminates template constraints. This comprehensive guide teaches flexible content setup, layout configuration, get_row_layout() conditional display, nested flexible fields, programmatic registration, and advanced techniques building custom WordPress page builders with ACF PRO.</p>
<h2 id="what-is-flexible-content">What Is Flexible Content?</h2>
<p><strong>Flexible Content Concept</strong>:</p>
<p>Flexible Content (ACF PRO) allows users to choose from multiple layout types and arrange them in any order:</p>
<ul>
<li><strong>Text Block</strong>: Heading, paragraph, alignment</li>
<li><strong>Image Block</strong>: Image, caption, size</li>
<li><strong>Video Block</strong>: Video URL, thumbnail</li>
<li><strong>Gallery</strong>: Multiple images</li>
<li><strong>Testimonial</strong>: Quote, author, photo</li>
<li><strong>Call to Action</strong>: Heading, text, button</li>
</ul>
<p><strong>Key Benefits</strong>:</p>
<ul>
<li>Drag-and-drop reordering</li>
<li>Unlimited layout combinations</li>
<li>Different fields per layout type</li>
<li>Complete editor flexibility</li>
<li>No template changes needed</li>
</ul>
<h2 id="creating-flexible-content-field">Creating Flexible Content Field</h2>
<p><strong>Add Flexible Content via ACF UI</strong>:</p>
<ol type="1">
<li>Custom Fields → Add Field</li>
<li>Field Type: Flexible Content (ACF PRO)</li>
<li>Configuration:
<ul>
<li>Field Label: Page Content</li>
<li>Field Name: page_content</li>
<li>Button Label: “Add Content Block”</li>
<li>Min/Max Layouts: Set limits (optional)</li>
</ul>
</li>
</ol>
<p><strong>Add Layout Types</strong>:</p>
<p>Click “Add Layout” for each content type:</p>
<p><strong>Layout 1: Text Block</strong></p>
<ul>
<li>Layout Name: text_block</li>
<li>Layout Label: Text Block</li>
<li>Sub-fields:
<ul>
<li>heading (Text)</li>
<li>content (Wysiwyg Editor)</li>
<li>alignment (Select: left/center/right)</li>
</ul>
</li>
</ul>
<p><strong>Layout 2: Image Block</strong></p>
<ul>
<li>Layout Name: image_block</li>
<li>Layout Label: Image Block</li>
<li>Sub-fields:
<ul>
<li>image (Image)</li>
<li>caption (Text)</li>
<li>size (Select: small/medium/large/full)</li>
</ul>
</li>
</ul>
<p><strong>Layout 3: Gallery</strong></p>
<ul>
<li>Layout Name: gallery</li>
<li>Layout Label: Gallery</li>
<li>Sub-fields:
<ul>
<li>images (Gallery)</li>
<li>columns (Number)</li>
</ul>
</li>
</ul>
<h2 id="basic-flexible-content-loop">Basic Flexible Content Loop</h2>
<p><strong>Display Layouts</strong>:</p>
<div class="sourceCode" id="cb1">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true"></a></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true"></a></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true"></a>        <span class="kw">if</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;text_block&#39;</span><span class="ot">)</span> :</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true"></a>            <span class="co">// Text Block Layout</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true"></a>            <span class="kw">$heading</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;heading&#39;</span><span class="ot">);</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true"></a>            <span class="kw">$content</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;content&#39;</span><span class="ot">);</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true"></a>            <span class="kw">$alignment</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;alignment&#39;</span><span class="ot">);</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true"></a></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block text-block text-&lt;?php echo esc_attr(</span><span class="kw">$alignment</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$heading</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true"></a>                    &lt;h2&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$heading</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h2&gt;</span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true"></a></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$content</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;content&quot;</span>&gt;</span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">echo</span> wp_kses_post<span class="ot">(</span><span class="kw">$content</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true"></a></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;image_block&#39;</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true"></a>            <span class="co">// Image Block Layout</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true"></a>            <span class="kw">$image</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;image&#39;</span><span class="ot">);</span></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true"></a>            <span class="kw">$caption</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;caption&#39;</span><span class="ot">);</span></span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true"></a>            <span class="kw">$size</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;size&#39;</span><span class="ot">);</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true"></a></span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block image-block size-&lt;?php echo esc_attr(</span><span class="kw">$size</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true"></a>                    &lt;figure&gt;</span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true"></a>                        &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][</span><span class="kw">$size</span><span class="st">]); ?&gt;&quot;</span></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true"></a>                             alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$caption</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true"></a>                            &lt;figcaption&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$caption</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/figcaption&gt;</span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true"></a>                    &lt;/figure&gt;</span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true"></a></span>
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;gallery&#39;</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true"></a>            <span class="co">// Gallery Layout</span></span>
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true"></a>            <span class="kw">$images</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;images&#39;</span><span class="ot">);</span></span>
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true"></a>            <span class="kw">$columns</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;columns&#39;</span><span class="ot">);</span></span>
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true"></a></span>
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block gallery-block columns-&lt;?php echo esc_attr(</span><span class="kw">$columns</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$images</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-grid&quot;</span>&gt;</span>
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$images</span> <span class="kw">as</span> <span class="kw">$image</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true"></a>                            &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true"></a>                                &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$image</span><span class="st">[&#39;sizes&#39;][&#39;medium&#39;]); ?&gt;&quot;</span></span>
<span id="cb1-56"><a href="#cb1-56" aria-hidden="true"></a>                                     alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$image</span><span class="st">[&#39;alt&#39;]); ?&gt;&quot;</span> /&gt;</span>
<span id="cb1-57"><a href="#cb1-57" aria-hidden="true"></a>                            &lt;/div&gt;</span>
<span id="cb1-58"><a href="#cb1-58" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">endfor</span>each<span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-59"><a href="#cb1-59" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb1-60"><a href="#cb1-60" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb1-61"><a href="#cb1-61" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb1-62"><a href="#cb1-62" aria-hidden="true"></a></span>
<span id="cb1-63"><a href="#cb1-63" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb1-64"><a href="#cb1-64" aria-hidden="true"></a></span>
<span id="cb1-65"><a href="#cb1-65" aria-hidden="true"></a>    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb1-66"><a href="#cb1-66" aria-hidden="true"></a></span>
<span id="cb1-67"><a href="#cb1-67" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb1-68"><a href="#cb1-68" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="complete-page-builder-example">Complete Page Builder Example</h2>
<p><strong>Advanced Layout Types</strong>:</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true"></a></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true"></a></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true"></a>        <span class="co">// Text Block</span></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true"></a>        <span class="kw">if</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;text_block&#39;</span><span class="ot">)</span> :</span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true"></a>            get_template_part<span class="ot">(</span><span class="st">&#39;template-parts/blocks/text-block&#39;</span><span class="ot">);</span></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true"></a></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true"></a>        <span class="co">// Hero Section</span></span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true"></a>        <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;hero&#39;</span><span class="ot">)</span> :</span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true"></a>            <span class="kw">$title</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;hero_title&#39;</span><span class="ot">);</span></span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true"></a>            <span class="kw">$subtitle</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;hero_subtitle&#39;</span><span class="ot">);</span></span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true"></a>            <span class="kw">$background</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;background_image&#39;</span><span class="ot">);</span></span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true"></a>            <span class="kw">$button_text</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;button_text&#39;</span><span class="ot">);</span></span>
<span id="cb2-16"><a href="#cb2-16" aria-hidden="true"></a>            <span class="kw">$button_link</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;button_link&#39;</span><span class="ot">);</span></span>
<span id="cb2-17"><a href="#cb2-17" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb2-18"><a href="#cb2-18" aria-hidden="true"></a></span>
<span id="cb2-19"><a href="#cb2-19" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block hero-block&quot;</span></span>
<span id="cb2-20"><a href="#cb2-20" aria-hidden="true"></a>                     style=<span class="st">&quot;background-image: url(&lt;?php echo esc_url(</span><span class="kw">$background</span><span class="st">[&#39;url&#39;]); ?&gt;);&quot;</span>&gt;</span>
<span id="cb2-21"><a href="#cb2-21" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;hero-content&quot;</span>&gt;</span>
<span id="cb2-22"><a href="#cb2-22" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$title</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-23"><a href="#cb2-23" aria-hidden="true"></a>                        &lt;h1&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$title</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h1&gt;</span>
<span id="cb2-24"><a href="#cb2-24" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-25"><a href="#cb2-25" aria-hidden="true"></a></span>
<span id="cb2-26"><a href="#cb2-26" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$subtitle</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-27"><a href="#cb2-27" aria-hidden="true"></a>                        &lt;p <span class="kw">class</span>=<span class="st">&quot;subtitle&quot;</span>&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$subtitle</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/p&gt;</span>
<span id="cb2-28"><a href="#cb2-28" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-29"><a href="#cb2-29" aria-hidden="true"></a></span>
<span id="cb2-30"><a href="#cb2-30" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$button_text</span> &amp;&amp; <span class="kw">$button_link</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-31"><a href="#cb2-31" aria-hidden="true"></a>                        &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$button_link</span><span class="st">); ?&gt;&quot;</span> <span class="kw">class</span>=<span class="st">&quot;btn btn-primary&quot;</span>&gt;</span>
<span id="cb2-32"><a href="#cb2-32" aria-hidden="true"></a>                            &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$button_text</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb2-33"><a href="#cb2-33" aria-hidden="true"></a>                        &lt;/a&gt;</span>
<span id="cb2-34"><a href="#cb2-34" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-35"><a href="#cb2-35" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb2-36"><a href="#cb2-36" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb2-37"><a href="#cb2-37" aria-hidden="true"></a></span>
<span id="cb2-38"><a href="#cb2-38" aria-hidden="true"></a>        <span class="co">// Two Column Layout</span></span>
<span id="cb2-39"><a href="#cb2-39" aria-hidden="true"></a>        <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;two_columns&#39;</span><span class="ot">)</span> :</span>
<span id="cb2-40"><a href="#cb2-40" aria-hidden="true"></a>            <span class="kw">$left_content</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;left_column&#39;</span><span class="ot">);</span></span>
<span id="cb2-41"><a href="#cb2-41" aria-hidden="true"></a>            <span class="kw">$right_content</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;right_column&#39;</span><span class="ot">);</span></span>
<span id="cb2-42"><a href="#cb2-42" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb2-43"><a href="#cb2-43" aria-hidden="true"></a></span>
<span id="cb2-44"><a href="#cb2-44" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block two-columns&quot;</span>&gt;</span>
<span id="cb2-45"><a href="#cb2-45" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;row&quot;</span>&gt;</span>
<span id="cb2-46"><a href="#cb2-46" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;col-left&quot;</span>&gt;</span>
<span id="cb2-47"><a href="#cb2-47" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">echo</span> wp_kses_post<span class="ot">(</span><span class="kw">$left_content</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb2-48"><a href="#cb2-48" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb2-49"><a href="#cb2-49" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;col-right&quot;</span>&gt;</span>
<span id="cb2-50"><a href="#cb2-50" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">echo</span> wp_kses_post<span class="ot">(</span><span class="kw">$right_content</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb2-51"><a href="#cb2-51" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb2-52"><a href="#cb2-52" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb2-53"><a href="#cb2-53" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb2-54"><a href="#cb2-54" aria-hidden="true"></a></span>
<span id="cb2-55"><a href="#cb2-55" aria-hidden="true"></a>        <span class="co">// Testimonials</span></span>
<span id="cb2-56"><a href="#cb2-56" aria-hidden="true"></a>        <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;testimonials&#39;</span><span class="ot">)</span> :</span>
<span id="cb2-57"><a href="#cb2-57" aria-hidden="true"></a>            <span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;testimonial_items&#39;</span><span class="ot">))</span> :</span>
<span id="cb2-58"><a href="#cb2-58" aria-hidden="true"></a>                <span class="kw">?&gt;</span></span>
<span id="cb2-59"><a href="#cb2-59" aria-hidden="true"></a>                &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block testimonials-block&quot;</span>&gt;</span>
<span id="cb2-60"><a href="#cb2-60" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;testimonials-grid&quot;</span>&gt;</span>
<span id="cb2-61"><a href="#cb2-61" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;testimonial_items&#39;</span><span class="ot">))</span> <span class="ot">:</span> the_row<span class="ot">();</span></span>
<span id="cb2-62"><a href="#cb2-62" aria-hidden="true"></a>                            <span class="kw">$quote</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;quote&#39;</span><span class="ot">);</span></span>
<span id="cb2-63"><a href="#cb2-63" aria-hidden="true"></a>                            <span class="kw">$author</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;author&#39;</span><span class="ot">);</span></span>
<span id="cb2-64"><a href="#cb2-64" aria-hidden="true"></a>                            <span class="kw">$company</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;company&#39;</span><span class="ot">);</span></span>
<span id="cb2-65"><a href="#cb2-65" aria-hidden="true"></a>                            <span class="kw">$photo</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;photo&#39;</span><span class="ot">);</span></span>
<span id="cb2-66"><a href="#cb2-66" aria-hidden="true"></a>                            <span class="kw">?&gt;</span></span>
<span id="cb2-67"><a href="#cb2-67" aria-hidden="true"></a></span>
<span id="cb2-68"><a href="#cb2-68" aria-hidden="true"></a>                            &lt;div <span class="kw">class</span>=<span class="st">&quot;testimonial&quot;</span>&gt;</span>
<span id="cb2-69"><a href="#cb2-69" aria-hidden="true"></a>                                &lt;blockquote&gt;</span>
<span id="cb2-70"><a href="#cb2-70" aria-hidden="true"></a>                                    &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$quote</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb2-71"><a href="#cb2-71" aria-hidden="true"></a>                                &lt;/blockquote&gt;</span>
<span id="cb2-72"><a href="#cb2-72" aria-hidden="true"></a></span>
<span id="cb2-73"><a href="#cb2-73" aria-hidden="true"></a>                                &lt;div <span class="kw">class</span>=<span class="st">&quot;testimonial-author&quot;</span>&gt;</span>
<span id="cb2-74"><a href="#cb2-74" aria-hidden="true"></a>                                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$photo</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-75"><a href="#cb2-75" aria-hidden="true"></a>                                        &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$photo</span><span class="st">[&#39;sizes&#39;][&#39;thumbnail&#39;]); ?&gt;&quot;</span></span>
<span id="cb2-76"><a href="#cb2-76" aria-hidden="true"></a>                                             alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$author</span><span class="st">); ?&gt;&quot;</span> /&gt;</span>
<span id="cb2-77"><a href="#cb2-77" aria-hidden="true"></a>                                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-78"><a href="#cb2-78" aria-hidden="true"></a></span>
<span id="cb2-79"><a href="#cb2-79" aria-hidden="true"></a>                                    &lt;div <span class="kw">class</span>=<span class="st">&quot;author-info&quot;</span>&gt;</span>
<span id="cb2-80"><a href="#cb2-80" aria-hidden="true"></a>                                        &lt;strong&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$author</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/strong&gt;</span>
<span id="cb2-81"><a href="#cb2-81" aria-hidden="true"></a>                                        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$company</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-82"><a href="#cb2-82" aria-hidden="true"></a>                                            &lt;span&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$company</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/span&gt;</span>
<span id="cb2-83"><a href="#cb2-83" aria-hidden="true"></a>                                        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-84"><a href="#cb2-84" aria-hidden="true"></a>                                    &lt;/div&gt;</span>
<span id="cb2-85"><a href="#cb2-85" aria-hidden="true"></a>                                &lt;/div&gt;</span>
<span id="cb2-86"><a href="#cb2-86" aria-hidden="true"></a>                            &lt;/div&gt;</span>
<span id="cb2-87"><a href="#cb2-87" aria-hidden="true"></a></span>
<span id="cb2-88"><a href="#cb2-88" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">endwhile</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-89"><a href="#cb2-89" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb2-90"><a href="#cb2-90" aria-hidden="true"></a>                &lt;/section&gt;</span>
<span id="cb2-91"><a href="#cb2-91" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb2-92"><a href="#cb2-92" aria-hidden="true"></a></span>
<span id="cb2-93"><a href="#cb2-93" aria-hidden="true"></a>        <span class="co">// Call to Action</span></span>
<span id="cb2-94"><a href="#cb2-94" aria-hidden="true"></a>        <span class="kw">elseif</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;cta&#39;</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb2-95"><a href="#cb2-95" aria-hidden="true"></a>            <span class="kw">$heading</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;cta_heading&#39;</span><span class="ot">);</span></span>
<span id="cb2-96"><a href="#cb2-96" aria-hidden="true"></a>            <span class="kw">$text</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;cta_text&#39;</span><span class="ot">);</span></span>
<span id="cb2-97"><a href="#cb2-97" aria-hidden="true"></a>            <span class="kw">$button</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;cta_button&#39;</span><span class="ot">);</span></span>
<span id="cb2-98"><a href="#cb2-98" aria-hidden="true"></a>            <span class="kw">$background_color</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;background_color&#39;</span><span class="ot">);</span></span>
<span id="cb2-99"><a href="#cb2-99" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb2-100"><a href="#cb2-100" aria-hidden="true"></a></span>
<span id="cb2-101"><a href="#cb2-101" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block cta-block&quot;</span></span>
<span id="cb2-102"><a href="#cb2-102" aria-hidden="true"></a>                     style=<span class="st">&quot;background-color: &lt;?php echo esc_attr(</span><span class="kw">$background_color</span><span class="st">); ?&gt;;&quot;</span>&gt;</span>
<span id="cb2-103"><a href="#cb2-103" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;cta-content&quot;</span>&gt;</span>
<span id="cb2-104"><a href="#cb2-104" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$heading</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-105"><a href="#cb2-105" aria-hidden="true"></a>                        &lt;h2&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$heading</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h2&gt;</span>
<span id="cb2-106"><a href="#cb2-106" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-107"><a href="#cb2-107" aria-hidden="true"></a></span>
<span id="cb2-108"><a href="#cb2-108" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$text</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-109"><a href="#cb2-109" aria-hidden="true"></a>                        &lt;p&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$text</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/p&gt;</span>
<span id="cb2-110"><a href="#cb2-110" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-111"><a href="#cb2-111" aria-hidden="true"></a></span>
<span id="cb2-112"><a href="#cb2-112" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$button</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb2-113"><a href="#cb2-113" aria-hidden="true"></a>                        &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$button</span><span class="st">[&#39;url&#39;]); ?&gt;&quot;</span> <span class="kw">class</span>=<span class="st">&quot;btn btn-large&quot;</span>&gt;</span>
<span id="cb2-114"><a href="#cb2-114" aria-hidden="true"></a>                            &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$button</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb2-115"><a href="#cb2-115" aria-hidden="true"></a>                        &lt;/a&gt;</span>
<span id="cb2-116"><a href="#cb2-116" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb2-117"><a href="#cb2-117" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb2-118"><a href="#cb2-118" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb2-119"><a href="#cb2-119" aria-hidden="true"></a></span>
<span id="cb2-120"><a href="#cb2-120" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb2-121"><a href="#cb2-121" aria-hidden="true"></a></span>
<span id="cb2-122"><a href="#cb2-122" aria-hidden="true"></a>    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb2-123"><a href="#cb2-123" aria-hidden="true"></a></span>
<span id="cb2-124"><a href="#cb2-124" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb2-125"><a href="#cb2-125" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="using-template-parts">Using Template Parts</h2>
<p><strong>Organize Layouts in Separate Files</strong>:</p>
<p><strong>main-template.php</strong>:</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true"></a></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true"></a>        <span class="kw">$layout</span> = get_row_layout<span class="ot">();</span></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true"></a></span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true"></a>        <span class="co">// Load template part based on layout name</span></span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true"></a>        get_template_part<span class="ot">(</span><span class="st">&#39;template-parts/blocks/&#39;</span> . <span class="kw">$layout</span><span class="ot">);</span></span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true"></a></span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true"></a>    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>template-parts/blocks/text_block.php</strong>:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a><span class="kw">$heading</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;heading&#39;</span><span class="ot">);</span></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true"></a><span class="kw">$content</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;content&#39;</span><span class="ot">);</span></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true"></a><span class="kw">$alignment</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;alignment&#39;</span><span class="ot">);</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true"></a><span class="kw">?&gt;</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true"></a></span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true"></a>&lt;section <span class="kw">class</span>=<span class="st">&quot;content-block text-block text-&lt;?php echo esc_attr(</span><span class="kw">$alignment</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$heading</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true"></a>        &lt;h2&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$heading</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h2&gt;</span>
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true"></a></span>
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$content</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;content&quot;</span>&gt;</span>
<span id="cb4-14"><a href="#cb4-14" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">echo</span> wp_kses_post<span class="ot">(</span><span class="kw">$content</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb4-15"><a href="#cb4-15" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb4-16"><a href="#cb4-16" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb4-17"><a href="#cb4-17" aria-hidden="true"></a>&lt;/section&gt;</span></code></pre>
</div>
<h2 id="programmatic-flexible-content-registration">Programmatic Flexible Content Registration</h2>
<p><strong>Register via PHP</strong>:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_register_flexible_content<span class="ot">()</span> {</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a>    <span class="kw">if</span> <span class="ot">(</span><span class="fu">function_exists</span><span class="ot">(</span><span class="st">&#39;acf_add_local_field_group&#39;</span><span class="ot">))</span> {</span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a>        acf_add_local_field_group<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span>    =&gt; <span class="st">&#39;group_page_builder&#39;</span><span class="ot">,</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a>            <span class="st">&#39;title&#39;</span>  =&gt; <span class="st">&#39;Page Builder&#39;</span><span class="ot">,</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a>            <span class="st">&#39;fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span>    =&gt; <span class="st">&#39;field_page_content&#39;</span><span class="ot">,</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span>  =&gt; <span class="st">&#39;Page Content&#39;</span><span class="ot">,</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span>   =&gt; <span class="st">&#39;page_content&#39;</span><span class="ot">,</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span>   =&gt; <span class="st">&#39;flexible_content&#39;</span><span class="ot">,</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true"></a>                    <span class="st">&#39;button_label&#39;</span> =&gt; <span class="st">&#39;Add Content Block&#39;</span><span class="ot">,</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true"></a>                    <span class="st">&#39;layouts&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true"></a>                        <span class="st">&#39;text_block&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-15"><a href="#cb5-15" aria-hidden="true"></a>                            <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;layout_text_block&#39;</span><span class="ot">,</span></span>
<span id="cb5-16"><a href="#cb5-16" aria-hidden="true"></a>                            <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;text_block&#39;</span><span class="ot">,</span></span>
<span id="cb5-17"><a href="#cb5-17" aria-hidden="true"></a>                            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Text Block&#39;</span><span class="ot">,</span></span>
<span id="cb5-18"><a href="#cb5-18" aria-hidden="true"></a>                            <span class="st">&#39;display&#39;</span> =&gt; <span class="st">&#39;block&#39;</span><span class="ot">,</span></span>
<span id="cb5-19"><a href="#cb5-19" aria-hidden="true"></a>                            <span class="st">&#39;sub_fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-20"><a href="#cb5-20" aria-hidden="true"></a>                                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-21"><a href="#cb5-21" aria-hidden="true"></a>                                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_heading&#39;</span><span class="ot">,</span></span>
<span id="cb5-22"><a href="#cb5-22" aria-hidden="true"></a>                                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Heading&#39;</span><span class="ot">,</span></span>
<span id="cb5-23"><a href="#cb5-23" aria-hidden="true"></a>                                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;heading&#39;</span><span class="ot">,</span></span>
<span id="cb5-24"><a href="#cb5-24" aria-hidden="true"></a>                                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb5-25"><a href="#cb5-25" aria-hidden="true"></a>                                <span class="ot">),</span></span>
<span id="cb5-26"><a href="#cb5-26" aria-hidden="true"></a>                                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-27"><a href="#cb5-27" aria-hidden="true"></a>                                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_content&#39;</span><span class="ot">,</span></span>
<span id="cb5-28"><a href="#cb5-28" aria-hidden="true"></a>                                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Content&#39;</span><span class="ot">,</span></span>
<span id="cb5-29"><a href="#cb5-29" aria-hidden="true"></a>                                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;content&#39;</span><span class="ot">,</span></span>
<span id="cb5-30"><a href="#cb5-30" aria-hidden="true"></a>                                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;wysiwyg&#39;</span><span class="ot">,</span></span>
<span id="cb5-31"><a href="#cb5-31" aria-hidden="true"></a>                                <span class="ot">),</span></span>
<span id="cb5-32"><a href="#cb5-32" aria-hidden="true"></a>                            <span class="ot">),</span></span>
<span id="cb5-33"><a href="#cb5-33" aria-hidden="true"></a>                        <span class="ot">),</span></span>
<span id="cb5-34"><a href="#cb5-34" aria-hidden="true"></a>                        <span class="st">&#39;image_block&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-35"><a href="#cb5-35" aria-hidden="true"></a>                            <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;layout_image_block&#39;</span><span class="ot">,</span></span>
<span id="cb5-36"><a href="#cb5-36" aria-hidden="true"></a>                            <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;image_block&#39;</span><span class="ot">,</span></span>
<span id="cb5-37"><a href="#cb5-37" aria-hidden="true"></a>                            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Image Block&#39;</span><span class="ot">,</span></span>
<span id="cb5-38"><a href="#cb5-38" aria-hidden="true"></a>                            <span class="st">&#39;display&#39;</span> =&gt; <span class="st">&#39;block&#39;</span><span class="ot">,</span></span>
<span id="cb5-39"><a href="#cb5-39" aria-hidden="true"></a>                            <span class="st">&#39;sub_fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-40"><a href="#cb5-40" aria-hidden="true"></a>                                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-41"><a href="#cb5-41" aria-hidden="true"></a>                                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_image&#39;</span><span class="ot">,</span></span>
<span id="cb5-42"><a href="#cb5-42" aria-hidden="true"></a>                                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Image&#39;</span><span class="ot">,</span></span>
<span id="cb5-43"><a href="#cb5-43" aria-hidden="true"></a>                                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;image&#39;</span><span class="ot">,</span></span>
<span id="cb5-44"><a href="#cb5-44" aria-hidden="true"></a>                                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;image&#39;</span><span class="ot">,</span></span>
<span id="cb5-45"><a href="#cb5-45" aria-hidden="true"></a>                                    <span class="st">&#39;return_format&#39;</span> =&gt; <span class="st">&#39;array&#39;</span><span class="ot">,</span></span>
<span id="cb5-46"><a href="#cb5-46" aria-hidden="true"></a>                                <span class="ot">),</span></span>
<span id="cb5-47"><a href="#cb5-47" aria-hidden="true"></a>                                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-48"><a href="#cb5-48" aria-hidden="true"></a>                                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_caption&#39;</span><span class="ot">,</span></span>
<span id="cb5-49"><a href="#cb5-49" aria-hidden="true"></a>                                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Caption&#39;</span><span class="ot">,</span></span>
<span id="cb5-50"><a href="#cb5-50" aria-hidden="true"></a>                                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;caption&#39;</span><span class="ot">,</span></span>
<span id="cb5-51"><a href="#cb5-51" aria-hidden="true"></a>                                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb5-52"><a href="#cb5-52" aria-hidden="true"></a>                                <span class="ot">),</span></span>
<span id="cb5-53"><a href="#cb5-53" aria-hidden="true"></a>                            <span class="ot">),</span></span>
<span id="cb5-54"><a href="#cb5-54" aria-hidden="true"></a>                        <span class="ot">),</span></span>
<span id="cb5-55"><a href="#cb5-55" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb5-56"><a href="#cb5-56" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb5-57"><a href="#cb5-57" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb5-58"><a href="#cb5-58" aria-hidden="true"></a>            <span class="st">&#39;location&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-59"><a href="#cb5-59" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-60"><a href="#cb5-60" aria-hidden="true"></a>                    <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb5-61"><a href="#cb5-61" aria-hidden="true"></a>                        <span class="st">&#39;param&#39;</span>    =&gt; <span class="st">&#39;post_type&#39;</span><span class="ot">,</span></span>
<span id="cb5-62"><a href="#cb5-62" aria-hidden="true"></a>                        <span class="st">&#39;operator&#39;</span> =&gt; <span class="st">&#39;==&#39;</span><span class="ot">,</span></span>
<span id="cb5-63"><a href="#cb5-63" aria-hidden="true"></a>                        <span class="st">&#39;value&#39;</span>    =&gt; <span class="st">&#39;page&#39;</span><span class="ot">,</span></span>
<span id="cb5-64"><a href="#cb5-64" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb5-65"><a href="#cb5-65" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb5-66"><a href="#cb5-66" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb5-67"><a href="#cb5-67" aria-hidden="true"></a>        <span class="ot">));</span></span>
<span id="cb5-68"><a href="#cb5-68" aria-hidden="true"></a>    }</span>
<span id="cb5-69"><a href="#cb5-69" aria-hidden="true"></a>}</span>
<span id="cb5-70"><a href="#cb5-70" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;acf/init&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_register_flexible_content&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="conditional-layout-display">Conditional Layout Display</h2>
<p><strong>Show Layouts Based on Conditions</strong>:</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a><span class="kw">$layout_index</span> = <span class="dv">0</span><span class="ot">;</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true"></a>        <span class="kw">$layout_index</span>++<span class="ot">;</span></span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true"></a>        <span class="kw">$layout</span> = get_row_layout<span class="ot">();</span></span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true"></a></span>
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true"></a>        <span class="co">// Add special class to first layout</span></span>
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true"></a>        <span class="kw">$first_class</span> = <span class="ot">(</span><span class="kw">$layout_index</span> === <span class="dv">1</span><span class="ot">)</span> <span class="ot">?</span> <span class="st">&#39;first-block&#39;</span> <span class="ot">:</span> <span class="st">&#39;&#39;</span><span class="ot">;</span></span>
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true"></a></span>
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true"></a>        <span class="co">// Add container to specific layouts only</span></span>
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true"></a>        <span class="kw">$needs_container</span> = <span class="fu">in_array</span><span class="ot">(</span><span class="kw">$layout</span><span class="ot">,</span> <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;text_block&#39;</span><span class="ot">,</span> <span class="st">&#39;cta&#39;</span><span class="ot">));</span></span>
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true"></a>        <span class="kw">?&gt;</span></span>
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true"></a></span>
<span id="cb6-16"><a href="#cb6-16" aria-hidden="true"></a>        &lt;section <span class="kw">class</span>=<span class="st">&quot;content-block &lt;?php echo esc_attr(</span><span class="kw">$layout</span><span class="st">); ?&gt; &lt;?php echo esc_attr(</span><span class="kw">$first_class</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb6-17"><a href="#cb6-17" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$needs_container</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb6-18"><a href="#cb6-18" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;container&quot;</span>&gt;</span>
<span id="cb6-19"><a href="#cb6-19" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb6-20"><a href="#cb6-20" aria-hidden="true"></a></span>
<span id="cb6-21"><a href="#cb6-21" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php</span>
<span id="cb6-22"><a href="#cb6-22" aria-hidden="true"></a>            <span class="co">// Display layout content</span></span>
<span id="cb6-23"><a href="#cb6-23" aria-hidden="true"></a>            get_template_part<span class="ot">(</span><span class="st">&#39;template-parts/blocks/&#39;</span> . <span class="kw">$layout</span><span class="ot">);</span></span>
<span id="cb6-24"><a href="#cb6-24" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb6-25"><a href="#cb6-25" aria-hidden="true"></a></span>
<span id="cb6-26"><a href="#cb6-26" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$needs_container</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb6-27"><a href="#cb6-27" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb6-28"><a href="#cb6-28" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb6-29"><a href="#cb6-29" aria-hidden="true"></a>        &lt;/section&gt;</span>
<span id="cb6-30"><a href="#cb6-30" aria-hidden="true"></a></span>
<span id="cb6-31"><a href="#cb6-31" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb6-32"><a href="#cb6-32" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb6-33"><a href="#cb6-33" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="nested-flexible-content">Nested Flexible Content</h2>
<p><strong>Flexible Content Within Flexible Content</strong>:</p>
<div class="sourceCode" id="cb7">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true"></a></span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true"></a>        <span class="kw">if</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;section_with_blocks&#39;</span><span class="ot">)</span> :</span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true"></a>            <span class="kw">$section_title</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;section_title&#39;</span><span class="ot">);</span></span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true"></a>            <span class="kw">?&gt;</span></span>
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true"></a></span>
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true"></a>            &lt;section <span class="kw">class</span>=<span class="st">&quot;multi-block-section&quot;</span>&gt;</span>
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true"></a>                &lt;h2&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$section_title</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h2&gt;</span>
<span id="cb7-11"><a href="#cb7-11" aria-hidden="true"></a></span>
<span id="cb7-12"><a href="#cb7-12" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php</span>
<span id="cb7-13"><a href="#cb7-13" aria-hidden="true"></a>                <span class="co">// Nested flexible content</span></span>
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true"></a>                <span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;section_blocks&#39;</span><span class="ot">))</span> <span class="ot">:</span></span>
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true"></a>                    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;section_blocks&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb7-16"><a href="#cb7-16" aria-hidden="true"></a></span>
<span id="cb7-17"><a href="#cb7-17" aria-hidden="true"></a>                        <span class="kw">if</span> <span class="ot">(</span>get_row_layout<span class="ot">()</span> == <span class="st">&#39;feature&#39;</span><span class="ot">)</span> :</span>
<span id="cb7-18"><a href="#cb7-18" aria-hidden="true"></a>                            <span class="kw">$feature_icon</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;icon&#39;</span><span class="ot">);</span></span>
<span id="cb7-19"><a href="#cb7-19" aria-hidden="true"></a>                            <span class="kw">$feature_title</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;title&#39;</span><span class="ot">);</span></span>
<span id="cb7-20"><a href="#cb7-20" aria-hidden="true"></a>                            <span class="kw">$feature_text</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;text&#39;</span><span class="ot">);</span></span>
<span id="cb7-21"><a href="#cb7-21" aria-hidden="true"></a>                            <span class="kw">?&gt;</span></span>
<span id="cb7-22"><a href="#cb7-22" aria-hidden="true"></a></span>
<span id="cb7-23"><a href="#cb7-23" aria-hidden="true"></a>                            &lt;div <span class="kw">class</span>=<span class="st">&quot;feature&quot;</span>&gt;</span>
<span id="cb7-24"><a href="#cb7-24" aria-hidden="true"></a>                                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$feature_icon</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb7-25"><a href="#cb7-25" aria-hidden="true"></a>                                    &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$feature_icon</span><span class="st">[&#39;url&#39;]); ?&gt;&quot;</span> alt=<span class="st">&quot;&quot;</span> /&gt;</span>
<span id="cb7-26"><a href="#cb7-26" aria-hidden="true"></a>                                &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb7-27"><a href="#cb7-27" aria-hidden="true"></a>                                &lt;h3&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$feature_title</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h3&gt;</span>
<span id="cb7-28"><a href="#cb7-28" aria-hidden="true"></a>                                &lt;p&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$feature_text</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/p&gt;</span>
<span id="cb7-29"><a href="#cb7-29" aria-hidden="true"></a>                            &lt;/div&gt;</span>
<span id="cb7-30"><a href="#cb7-30" aria-hidden="true"></a></span>
<span id="cb7-31"><a href="#cb7-31" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb7-32"><a href="#cb7-32" aria-hidden="true"></a></span>
<span id="cb7-33"><a href="#cb7-33" aria-hidden="true"></a>                    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb7-34"><a href="#cb7-34" aria-hidden="true"></a>                <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb7-35"><a href="#cb7-35" aria-hidden="true"></a>                <span class="kw">?&gt;</span></span>
<span id="cb7-36"><a href="#cb7-36" aria-hidden="true"></a>            &lt;/section&gt;</span>
<span id="cb7-37"><a href="#cb7-37" aria-hidden="true"></a></span>
<span id="cb7-38"><a href="#cb7-38" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb7-39"><a href="#cb7-39" aria-hidden="true"></a></span>
<span id="cb7-40"><a href="#cb7-40" aria-hidden="true"></a>    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb7-41"><a href="#cb7-41" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb7-42"><a href="#cb7-42" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="dynamic-classes-and-styling">Dynamic Classes and Styling</h2>
<p><strong>Add Custom Classes from Fields</strong>:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> :</span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span>have_rows<span class="ot">(</span><span class="st">&#39;page_content&#39;</span><span class="ot">))</span> : the_row<span class="ot">();</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a>        <span class="kw">$layout</span> = get_row_layout<span class="ot">();</span></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a>        <span class="kw">$custom_class</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;custom_css_class&#39;</span><span class="ot">);</span></span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a>        <span class="kw">$background_color</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;background_color&#39;</span><span class="ot">);</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a>        <span class="kw">$padding</span> = get_sub_field<span class="ot">(</span><span class="st">&#39;padding_size&#39;</span><span class="ot">);</span></span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a>        <span class="kw">$classes</span> = <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a>            <span class="st">&#39;content-block&#39;</span><span class="ot">,</span></span>
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true"></a>            <span class="kw">$layout</span><span class="ot">,</span></span>
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true"></a>            <span class="kw">$custom_class</span><span class="ot">,</span></span>
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true"></a>            <span class="st">&#39;padding-&#39;</span> . <span class="kw">$padding</span><span class="ot">,</span></span>
<span id="cb8-15"><a href="#cb8-15" aria-hidden="true"></a>        <span class="ot">);</span></span>
<span id="cb8-16"><a href="#cb8-16" aria-hidden="true"></a></span>
<span id="cb8-17"><a href="#cb8-17" aria-hidden="true"></a>        <span class="kw">$style</span> = <span class="kw">$background_color</span> <span class="ot">?</span> <span class="st">&#39;background-color: &#39;</span> . esc_attr<span class="ot">(</span><span class="kw">$background_color</span><span class="ot">)</span> <span class="ot">:</span> <span class="st">&#39;&#39;</span><span class="ot">;</span></span>
<span id="cb8-18"><a href="#cb8-18" aria-hidden="true"></a>        <span class="kw">?&gt;</span></span>
<span id="cb8-19"><a href="#cb8-19" aria-hidden="true"></a></span>
<span id="cb8-20"><a href="#cb8-20" aria-hidden="true"></a>        &lt;section <span class="kw">class</span>=<span class="st">&quot;&lt;?php echo esc_attr(implode(&#39; &#39;, array_filter(</span><span class="kw">$classes</span><span class="st">))); ?&gt;&quot;</span></span>
<span id="cb8-21"><a href="#cb8-21" aria-hidden="true"></a>                 &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$style</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span>style=<span class="st">&quot;&lt;?php echo </span><span class="kw">$style</span><span class="st">; ?&gt;&quot;</span>&lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb8-22"><a href="#cb8-22" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php get_template_part<span class="ot">(</span><span class="st">&#39;template-parts/blocks/&#39;</span> . <span class="kw">$layout</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb8-23"><a href="#cb8-23" aria-hidden="true"></a>        &lt;/section&gt;</span>
<span id="cb8-24"><a href="#cb8-24" aria-hidden="true"></a></span>
<span id="cb8-25"><a href="#cb8-25" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb8-26"><a href="#cb8-26" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb8-27"><a href="#cb8-27" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="layout-clone-field">Layout Clone Field</h2>
<p><strong>Reuse Layout Configurations</strong>:</p>
<div class="sourceCode" id="cb9">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="co">// Create base layout configuration</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a>acf_add_local_field_group<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true"></a>    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;group_block_settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true"></a>    <span class="st">&#39;title&#39;</span> =&gt; <span class="st">&#39;Block Settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true"></a>    <span class="st">&#39;fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_block_settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true"></a>            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Block Settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;block_settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-10"><a href="#cb9-10" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;group&#39;</span><span class="ot">,</span></span>
<span id="cb9-11"><a href="#cb9-11" aria-hidden="true"></a>            <span class="st">&#39;sub_fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-12"><a href="#cb9-12" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-13"><a href="#cb9-13" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_margin&#39;</span><span class="ot">,</span></span>
<span id="cb9-14"><a href="#cb9-14" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Margin&#39;</span><span class="ot">,</span></span>
<span id="cb9-15"><a href="#cb9-15" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;margin&#39;</span><span class="ot">,</span></span>
<span id="cb9-16"><a href="#cb9-16" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;select&#39;</span><span class="ot">,</span></span>
<span id="cb9-17"><a href="#cb9-17" aria-hidden="true"></a>                    <span class="st">&#39;choices&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-18"><a href="#cb9-18" aria-hidden="true"></a>                        <span class="st">&#39;none&#39;</span> =&gt; <span class="st">&#39;None&#39;</span><span class="ot">,</span></span>
<span id="cb9-19"><a href="#cb9-19" aria-hidden="true"></a>                        <span class="st">&#39;small&#39;</span> =&gt; <span class="st">&#39;Small&#39;</span><span class="ot">,</span></span>
<span id="cb9-20"><a href="#cb9-20" aria-hidden="true"></a>                        <span class="st">&#39;medium&#39;</span> =&gt; <span class="st">&#39;Medium&#39;</span><span class="ot">,</span></span>
<span id="cb9-21"><a href="#cb9-21" aria-hidden="true"></a>                        <span class="st">&#39;large&#39;</span> =&gt; <span class="st">&#39;Large&#39;</span><span class="ot">,</span></span>
<span id="cb9-22"><a href="#cb9-22" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb9-23"><a href="#cb9-23" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb9-24"><a href="#cb9-24" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-25"><a href="#cb9-25" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_animation&#39;</span><span class="ot">,</span></span>
<span id="cb9-26"><a href="#cb9-26" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Animation&#39;</span><span class="ot">,</span></span>
<span id="cb9-27"><a href="#cb9-27" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;animation&#39;</span><span class="ot">,</span></span>
<span id="cb9-28"><a href="#cb9-28" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;select&#39;</span><span class="ot">,</span></span>
<span id="cb9-29"><a href="#cb9-29" aria-hidden="true"></a>                    <span class="st">&#39;choices&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-30"><a href="#cb9-30" aria-hidden="true"></a>                        <span class="st">&#39;none&#39;</span> =&gt; <span class="st">&#39;None&#39;</span><span class="ot">,</span></span>
<span id="cb9-31"><a href="#cb9-31" aria-hidden="true"></a>                        <span class="st">&#39;fade-in&#39;</span> =&gt; <span class="st">&#39;Fade In&#39;</span><span class="ot">,</span></span>
<span id="cb9-32"><a href="#cb9-32" aria-hidden="true"></a>                        <span class="st">&#39;slide-up&#39;</span> =&gt; <span class="st">&#39;Slide Up&#39;</span><span class="ot">,</span></span>
<span id="cb9-33"><a href="#cb9-33" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb9-34"><a href="#cb9-34" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb9-35"><a href="#cb9-35" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb9-36"><a href="#cb9-36" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb9-37"><a href="#cb9-37" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb9-38"><a href="#cb9-38" aria-hidden="true"></a><span class="ot">));</span></span>
<span id="cb9-39"><a href="#cb9-39" aria-hidden="true"></a></span>
<span id="cb9-40"><a href="#cb9-40" aria-hidden="true"></a><span class="co">// Clone in flexible content layouts</span></span>
<span id="cb9-41"><a href="#cb9-41" aria-hidden="true"></a><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb9-42"><a href="#cb9-42" aria-hidden="true"></a>    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_settings_clone&#39;</span><span class="ot">,</span></span>
<span id="cb9-43"><a href="#cb9-43" aria-hidden="true"></a>    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-44"><a href="#cb9-44" aria-hidden="true"></a>    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;settings&#39;</span><span class="ot">,</span></span>
<span id="cb9-45"><a href="#cb9-45" aria-hidden="true"></a>    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;clone&#39;</span><span class="ot">,</span></span>
<span id="cb9-46"><a href="#cb9-46" aria-hidden="true"></a>    <span class="st">&#39;clone&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;field_block_settings&#39;</span><span class="ot">),</span></span>
<span id="cb9-47"><a href="#cb9-47" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="best-practices">Best Practices</h2>
<p><strong>Organize Layout Files</strong>:</p>
<pre><code>theme/
├── template-parts/
│   └── blocks/
│       ├── text_block.php
│       ├── image_block.php
│       ├── gallery.php
│       ├── hero.php
│       ├── testimonials.php
│       └── cta.php</code></pre>
<p><strong>Use Consistent Naming</strong>:</p>
<ul>
<li>Layout names: snake_case (text_block, image_block)</li>
<li>Layout labels: Title Case (Text Block, Image Block)</li>
<li>CSS classes: kebab-case (text-block, image-block)</li>
</ul>
<p><strong>Escape Output</strong>:</p>
<div class="sourceCode" id="cb11">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$text</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_url<span class="ot">(</span><span class="kw">$url</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_attr<span class="ot">(</span><span class="kw">$class</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> wp_kses_post<span class="ot">(</span><span class="kw">$html_content</span><span class="ot">);</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="conclusion">Conclusion</h2>
<p>ACF Flexible Content Fields create modular page builders through multiple layout types, get_row_layout() conditional display, and drag-and-drop reordering eliminating rigid template structures. Register layouts programmatically with acf_add_local_field_group(), organize layout templates in separate files with get_template_part(), implement nested flexible content for complex page structures, and add custom classes and styling options for design flexibility. Flexible content empowers editors to build custom page layouts without developer intervention maintaining consistent design patterns.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://www.advancedcustomfields.com/resources/flexible-content/">ACF Flexible Content Documentation</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/get_row_layout/">get_row_layout() Function</a></li>
<li><a href="https://www.advancedcustomfields.com/blog/building-a-page-builder-with-acf/">Page Builder Patterns</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/clone/">Clone Field Type</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/flexible-content/#layout-settings">Layout Display Settings</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Page builder configurations need reliable backups. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> protects your WordPress flexible content layouts and custom field data automatically. Safeguard your modular page structures—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/acf-flexible-content-layouts-create-modular-page-builders/">ACF Flexible Content Layouts: Create Modular Page Builders</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ACF and Gutenberg: Integrating Custom Fields with Block Editor</title>
		<link>https://developryplugins.com/acf-and-gutenberg-integrating-custom-fields-with-block-editor/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Fri, 10 Oct 2025 09:00:00 +0000</pubDate>
				<category><![CDATA[Advanced Custom Fields (ACF) Tutorials]]></category>
		<category><![CDATA[acf blocks]]></category>
		<category><![CDATA[acf pro]]></category>
		<category><![CDATA[block editor]]></category>
		<category><![CDATA[custom blocks]]></category>
		<category><![CDATA[gutenberg]]></category>
		<guid isPermaLink="false">https://developryplugins.com/acf-and-gutenberg-integrating-custom-fields-with-block-editor/</guid>

					<description><![CDATA[<p>ACF Blocks (ACF PRO) enable custom Gutenberg block creation through PHP registration combining block editor flexibility with ACF field power. From simple content blocks with custom fields to complex layouts...</p>
<p>The post <a href="https://developryplugins.com/acf-and-gutenberg-integrating-custom-fields-with-block-editor/">ACF and Gutenberg: Integrating Custom Fields with Block Editor</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>ACF Blocks (ACF PRO) enable custom Gutenberg block creation through PHP registration combining block editor flexibility with ACF field power. From simple content blocks with custom fields to complex layouts with InnerBlocks and block templates, ACF Blocks eliminate React JavaScript requirements. This comprehensive guide teaches ACF Block registration, field integration, render callbacks, block templates, InnerBlocks support, and advanced techniques creating custom WordPress Gutenberg blocks with familiar ACF workflows.</p>
<h2 id="what-are-acf-blocks">What Are ACF Blocks?</h2>
<p><strong>ACF Blocks Concept</strong> (ACF PRO 5.8+):</p>
<p>ACF Blocks create custom Gutenberg blocks using PHP:</p>
<ul>
<li><strong>No React required</strong>: Use PHP templates</li>
<li><strong>ACF Fields</strong>: Familiar field interface</li>
<li><strong>Block Controls</strong>: Native block toolbar</li>
<li><strong>Reusable</strong>: Save and reuse block instances</li>
<li><strong>Flexible</strong>: Full block editor integration</li>
</ul>
<p><strong>Block vs Field Group</strong>:</p>
<pre><code>Traditional Field Group:
- Attached to post type
- Single metabox location
- Fixed field order

ACF Block:
- Insertable anywhere in content
- Multiple instances per post
- Drag-and-drop positioning
- Reusable patterns</code></pre>
<h2 id="basic-block-registration">Basic Block Registration</h2>
<p><strong>Register Simple Block</strong> (functions.php):</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_register_acf_blocks<span class="ot">()</span> {</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true"></a>    <span class="co">// Check ACF function exists</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true"></a>    <span class="kw">if</span> <span class="ot">(</span><span class="fu">function_exists</span><span class="ot">(</span><span class="st">&#39;acf_register_block_type&#39;</span><span class="ot">))</span> {</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true"></a>        acf_register_block_type<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;testimonial&#39;</span><span class="ot">,</span></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true"></a>            <span class="st">&#39;title&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Testimonial&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true"></a>            <span class="st">&#39;description&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;A custom testimonial block&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true"></a>            <span class="st">&#39;render_template&#39;</span> =&gt; get_template_directory<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.php&#39;</span><span class="ot">,</span></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true"></a>            <span class="st">&#39;category&#39;</span> =&gt; <span class="st">&#39;common&#39;</span><span class="ot">,</span></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true"></a>            <span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;format-quote&#39;</span><span class="ot">,</span></span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true"></a>            <span class="st">&#39;keywords&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;testimonial&#39;</span><span class="ot">,</span> <span class="st">&#39;quote&#39;</span><span class="ot">,</span> <span class="st">&#39;review&#39;</span><span class="ot">),</span></span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true"></a>        <span class="ot">));</span></span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true"></a>    }</span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true"></a>}</span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;acf/init&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_register_acf_blocks&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="block-registration-parameters">Block Registration Parameters</h2>
<p><strong>Complete Configuration</strong>:</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a>acf_register_block_type<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true"></a>    <span class="co">// Required</span></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true"></a>    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;testimonial&#39;</span><span class="ot">,</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true"></a>    <span class="st">&#39;title&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Testimonial&#39;</span><span class="ot">),</span></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true"></a></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true"></a>    <span class="co">// Content</span></span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true"></a>    <span class="st">&#39;description&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;A testimonial block&#39;</span><span class="ot">),</span></span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true"></a>    <span class="st">&#39;render_template&#39;</span> =&gt; <span class="st">&#39;blocks/testimonial.php&#39;</span><span class="ot">,</span></span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true"></a>    <span class="st">&#39;render_callback&#39;</span> =&gt; <span class="st">&#39;mytheme_render_testimonial&#39;</span><span class="ot">,</span></span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true"></a></span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true"></a>    <span class="co">// Appearance</span></span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true"></a>    <span class="st">&#39;category&#39;</span> =&gt; <span class="st">&#39;common&#39;</span><span class="ot">,</span></span>
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true"></a>    <span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;format-quote&#39;</span><span class="ot">,</span></span>
<span id="cb3-14"><a href="#cb3-14" aria-hidden="true"></a>    <span class="st">&#39;keywords&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;testimonial&#39;</span><span class="ot">),</span></span>
<span id="cb3-15"><a href="#cb3-15" aria-hidden="true"></a></span>
<span id="cb3-16"><a href="#cb3-16" aria-hidden="true"></a>    <span class="co">// Behavior</span></span>
<span id="cb3-17"><a href="#cb3-17" aria-hidden="true"></a>    <span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;preview&#39;</span><span class="ot">,</span></span>
<span id="cb3-18"><a href="#cb3-18" aria-hidden="true"></a>    <span class="st">&#39;align&#39;</span> =&gt; <span class="st">&#39;full&#39;</span><span class="ot">,</span></span>
<span id="cb3-19"><a href="#cb3-19" aria-hidden="true"></a>    <span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb3-20"><a href="#cb3-20" aria-hidden="true"></a>        <span class="st">&#39;align&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb3-21"><a href="#cb3-21" aria-hidden="true"></a>        <span class="st">&#39;mode&#39;</span> =&gt; <span class="kw">false</span><span class="ot">,</span></span>
<span id="cb3-22"><a href="#cb3-22" aria-hidden="true"></a>        <span class="st">&#39;multiple&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb3-23"><a href="#cb3-23" aria-hidden="true"></a>        <span class="st">&#39;jsx&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb3-24"><a href="#cb3-24" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb3-25"><a href="#cb3-25" aria-hidden="true"></a></span>
<span id="cb3-26"><a href="#cb3-26" aria-hidden="true"></a>    <span class="co">// Style</span></span>
<span id="cb3-27"><a href="#cb3-27" aria-hidden="true"></a>    <span class="st">&#39;enqueue_style&#39;</span> =&gt; get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.css&#39;</span><span class="ot">,</span></span>
<span id="cb3-28"><a href="#cb3-28" aria-hidden="true"></a>    <span class="st">&#39;enqueue_script&#39;</span> =&gt; get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.js&#39;</span><span class="ot">,</span></span>
<span id="cb3-29"><a href="#cb3-29" aria-hidden="true"></a>    <span class="st">&#39;enqueue_assets&#39;</span> =&gt; <span class="st">&#39;mytheme_testimonial_assets&#39;</span><span class="ot">,</span></span>
<span id="cb3-30"><a href="#cb3-30" aria-hidden="true"></a></span>
<span id="cb3-31"><a href="#cb3-31" aria-hidden="true"></a>    <span class="co">// Advanced</span></span>
<span id="cb3-32"><a href="#cb3-32" aria-hidden="true"></a>    <span class="st">&#39;post_types&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;post&#39;</span><span class="ot">,</span> <span class="st">&#39;page&#39;</span><span class="ot">),</span></span>
<span id="cb3-33"><a href="#cb3-33" aria-hidden="true"></a>    <span class="st">&#39;example&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb3-34"><a href="#cb3-34" aria-hidden="true"></a>        <span class="st">&#39;attributes&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb3-35"><a href="#cb3-35" aria-hidden="true"></a>            <span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;preview&#39;</span><span class="ot">,</span></span>
<span id="cb3-36"><a href="#cb3-36" aria-hidden="true"></a>            <span class="st">&#39;data&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb3-37"><a href="#cb3-37" aria-hidden="true"></a>                <span class="st">&#39;author&#39;</span> =&gt; <span class="st">&#39;John Doe&#39;</span><span class="ot">,</span></span>
<span id="cb3-38"><a href="#cb3-38" aria-hidden="true"></a>                <span class="st">&#39;quote&#39;</span> =&gt; <span class="st">&#39;Amazing service!&#39;</span><span class="ot">,</span></span>
<span id="cb3-39"><a href="#cb3-39" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb3-40"><a href="#cb3-40" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb3-41"><a href="#cb3-41" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb3-42"><a href="#cb3-42" aria-hidden="true"></a><span class="ot">));</span></span></code></pre>
</div>
<p><strong>Parameter Explanations</strong>:</p>
<pre><code>name: Unique slug (no spaces)
title: Display name in inserter
description: Block description
render_template: PHP file path
render_callback: PHP function name
category: Block category
icon: Dashicon or custom SVG
keywords: Search terms
mode: &#39;preview&#39;, &#39;edit&#39;, or &#39;auto&#39;
align: Default alignment
supports: Block capabilities
enqueue_style: CSS file URL
enqueue_script: JS file URL
post_types: Allowed post types
example: Preview data</code></pre>
<h2 id="creating-block-template">Creating Block Template</h2>
<p><strong>Testimonial Block Template</strong> (blocks/testimonial.php):</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a><span class="co">/**</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a><span class="co"> * Testimonial Block Template</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a><span class="co"> *</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a><span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">array</span><span class="co"> $block The block settings and attributes</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a><span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">string</span><span class="co"> $content The block inner HTML (empty)</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a><span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">bool</span><span class="co"> $is_preview True during AJAX preview</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true"></a><span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">int</span><span class="co"> $post_id The post ID this block is saved to</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true"></a><span class="co"> */</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true"></a></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true"></a><span class="co">// Get ACF fields</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true"></a><span class="kw">$author</span> = get_field<span class="ot">(</span><span class="st">&#39;author&#39;</span><span class="ot">);</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true"></a><span class="kw">$company</span> = get_field<span class="ot">(</span><span class="st">&#39;company&#39;</span><span class="ot">);</span></span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true"></a><span class="kw">$quote</span> = get_field<span class="ot">(</span><span class="st">&#39;quote&#39;</span><span class="ot">);</span></span>
<span id="cb5-15"><a href="#cb5-15" aria-hidden="true"></a><span class="kw">$photo</span> = get_field<span class="ot">(</span><span class="st">&#39;photo&#39;</span><span class="ot">);</span></span>
<span id="cb5-16"><a href="#cb5-16" aria-hidden="true"></a><span class="kw">$rating</span> = get_field<span class="ot">(</span><span class="st">&#39;rating&#39;</span><span class="ot">);</span></span>
<span id="cb5-17"><a href="#cb5-17" aria-hidden="true"></a></span>
<span id="cb5-18"><a href="#cb5-18" aria-hidden="true"></a><span class="co">// Block ID</span></span>
<span id="cb5-19"><a href="#cb5-19" aria-hidden="true"></a><span class="kw">$block_id</span> = <span class="st">&#39;testimonial-&#39;</span> . <span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;id&#39;</span><span class="ot">];</span></span>
<span id="cb5-20"><a href="#cb5-20" aria-hidden="true"></a></span>
<span id="cb5-21"><a href="#cb5-21" aria-hidden="true"></a><span class="co">// Block classes</span></span>
<span id="cb5-22"><a href="#cb5-22" aria-hidden="true"></a><span class="kw">$class_name</span> = <span class="st">&#39;testimonial-block&#39;</span><span class="ot">;</span></span>
<span id="cb5-23"><a href="#cb5-23" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>!<span class="kw">empty</span><span class="ot">(</span><span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;className&#39;</span><span class="ot">]))</span> {</span>
<span id="cb5-24"><a href="#cb5-24" aria-hidden="true"></a>    <span class="kw">$class_name</span> .= <span class="st">&#39; &#39;</span> . <span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;className&#39;</span><span class="ot">];</span></span>
<span id="cb5-25"><a href="#cb5-25" aria-hidden="true"></a>}</span>
<span id="cb5-26"><a href="#cb5-26" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>!<span class="kw">empty</span><span class="ot">(</span><span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;align&#39;</span><span class="ot">]))</span> {</span>
<span id="cb5-27"><a href="#cb5-27" aria-hidden="true"></a>    <span class="kw">$class_name</span> .= <span class="st">&#39; align&#39;</span> . <span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;align&#39;</span><span class="ot">];</span></span>
<span id="cb5-28"><a href="#cb5-28" aria-hidden="true"></a>}</span>
<span id="cb5-29"><a href="#cb5-29" aria-hidden="true"></a><span class="kw">?&gt;</span></span>
<span id="cb5-30"><a href="#cb5-30" aria-hidden="true"></a></span>
<span id="cb5-31"><a href="#cb5-31" aria-hidden="true"></a>&lt;div id=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$block_id</span><span class="st">); ?&gt;&quot;</span> <span class="kw">class</span>=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$class_name</span><span class="st">); ?&gt;&quot;</span>&gt;</span>
<span id="cb5-32"><a href="#cb5-32" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$quote</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-33"><a href="#cb5-33" aria-hidden="true"></a>        &lt;blockquote <span class="kw">class</span>=<span class="st">&quot;testimonial-quote&quot;</span>&gt;</span>
<span id="cb5-34"><a href="#cb5-34" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$quote</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb5-35"><a href="#cb5-35" aria-hidden="true"></a>        &lt;/blockquote&gt;</span>
<span id="cb5-36"><a href="#cb5-36" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-37"><a href="#cb5-37" aria-hidden="true"></a></span>
<span id="cb5-38"><a href="#cb5-38" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;testimonial-author&quot;</span>&gt;</span>
<span id="cb5-39"><a href="#cb5-39" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$photo</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-40"><a href="#cb5-40" aria-hidden="true"></a>            &lt;img src=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$photo</span><span class="st">[&#39;sizes&#39;][&#39;thumbnail&#39;]); ?&gt;&quot;</span></span>
<span id="cb5-41"><a href="#cb5-41" aria-hidden="true"></a>                 alt=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$author</span><span class="st">); ?&gt;&quot;</span></span>
<span id="cb5-42"><a href="#cb5-42" aria-hidden="true"></a>                 <span class="kw">class</span>=<span class="st">&quot;author-photo&quot;</span> /&gt;</span>
<span id="cb5-43"><a href="#cb5-43" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-44"><a href="#cb5-44" aria-hidden="true"></a></span>
<span id="cb5-45"><a href="#cb5-45" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;author-info&quot;</span>&gt;</span>
<span id="cb5-46"><a href="#cb5-46" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$author</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-47"><a href="#cb5-47" aria-hidden="true"></a>                &lt;strong <span class="kw">class</span>=<span class="st">&quot;author-name&quot;</span>&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$author</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/strong&gt;</span>
<span id="cb5-48"><a href="#cb5-48" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-49"><a href="#cb5-49" aria-hidden="true"></a></span>
<span id="cb5-50"><a href="#cb5-50" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$company</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-51"><a href="#cb5-51" aria-hidden="true"></a>                &lt;span <span class="kw">class</span>=<span class="st">&quot;author-company&quot;</span>&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$company</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/span&gt;</span>
<span id="cb5-52"><a href="#cb5-52" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-53"><a href="#cb5-53" aria-hidden="true"></a></span>
<span id="cb5-54"><a href="#cb5-54" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$rating</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-55"><a href="#cb5-55" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;rating&quot;</span>&gt;</span>
<span id="cb5-56"><a href="#cb5-56" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">for</span> <span class="ot">(</span><span class="kw">$i</span> = <span class="dv">0</span><span class="ot">;</span> <span class="kw">$i</span> &lt; <span class="kw">$rating</span><span class="ot">;</span> <span class="kw">$i</span>++<span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb5-57"><a href="#cb5-57" aria-hidden="true"></a>                        &lt;span <span class="kw">class</span>=<span class="st">&quot;star&quot;</span>&gt;★&lt;/span&gt;</span>
<span id="cb5-58"><a href="#cb5-58" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">endfor</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-59"><a href="#cb5-59" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb5-60"><a href="#cb5-60" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb5-61"><a href="#cb5-61" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb5-62"><a href="#cb5-62" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb5-63"><a href="#cb5-63" aria-hidden="true"></a>&lt;/div&gt;</span></code></pre>
</div>
<h2 id="block-field-group">Block Field Group</h2>
<p><strong>Register Fields for Block</strong>:</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_register_block_fields<span class="ot">()</span> {</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a>    <span class="kw">if</span> <span class="ot">(</span><span class="fu">function_exists</span><span class="ot">(</span><span class="st">&#39;acf_add_local_field_group&#39;</span><span class="ot">))</span> {</span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a>        acf_add_local_field_group<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;group_testimonial_block&#39;</span><span class="ot">,</span></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true"></a>            <span class="st">&#39;title&#39;</span> =&gt; <span class="st">&#39;Testimonial Block Fields&#39;</span><span class="ot">,</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true"></a>            <span class="st">&#39;fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_author&#39;</span><span class="ot">,</span></span>
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Author&#39;</span><span class="ot">,</span></span>
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;author&#39;</span><span class="ot">,</span></span>
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true"></a>                    <span class="st">&#39;required&#39;</span> =&gt; <span class="dv">1</span><span class="ot">,</span></span>
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_company&#39;</span><span class="ot">,</span></span>
<span id="cb6-16"><a href="#cb6-16" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Company&#39;</span><span class="ot">,</span></span>
<span id="cb6-17"><a href="#cb6-17" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;company&#39;</span><span class="ot">,</span></span>
<span id="cb6-18"><a href="#cb6-18" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb6-19"><a href="#cb6-19" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-20"><a href="#cb6-20" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-21"><a href="#cb6-21" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_quote&#39;</span><span class="ot">,</span></span>
<span id="cb6-22"><a href="#cb6-22" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Quote&#39;</span><span class="ot">,</span></span>
<span id="cb6-23"><a href="#cb6-23" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;quote&#39;</span><span class="ot">,</span></span>
<span id="cb6-24"><a href="#cb6-24" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;textarea&#39;</span><span class="ot">,</span></span>
<span id="cb6-25"><a href="#cb6-25" aria-hidden="true"></a>                    <span class="st">&#39;required&#39;</span> =&gt; <span class="dv">1</span><span class="ot">,</span></span>
<span id="cb6-26"><a href="#cb6-26" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-27"><a href="#cb6-27" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-28"><a href="#cb6-28" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_photo&#39;</span><span class="ot">,</span></span>
<span id="cb6-29"><a href="#cb6-29" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Photo&#39;</span><span class="ot">,</span></span>
<span id="cb6-30"><a href="#cb6-30" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;photo&#39;</span><span class="ot">,</span></span>
<span id="cb6-31"><a href="#cb6-31" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;image&#39;</span><span class="ot">,</span></span>
<span id="cb6-32"><a href="#cb6-32" aria-hidden="true"></a>                    <span class="st">&#39;return_format&#39;</span> =&gt; <span class="st">&#39;array&#39;</span><span class="ot">,</span></span>
<span id="cb6-33"><a href="#cb6-33" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-34"><a href="#cb6-34" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-35"><a href="#cb6-35" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_rating&#39;</span><span class="ot">,</span></span>
<span id="cb6-36"><a href="#cb6-36" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Rating&#39;</span><span class="ot">,</span></span>
<span id="cb6-37"><a href="#cb6-37" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;rating&#39;</span><span class="ot">,</span></span>
<span id="cb6-38"><a href="#cb6-38" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;range&#39;</span><span class="ot">,</span></span>
<span id="cb6-39"><a href="#cb6-39" aria-hidden="true"></a>                    <span class="st">&#39;min&#39;</span> =&gt; <span class="dv">1</span><span class="ot">,</span></span>
<span id="cb6-40"><a href="#cb6-40" aria-hidden="true"></a>                    <span class="st">&#39;max&#39;</span> =&gt; <span class="dv">5</span><span class="ot">,</span></span>
<span id="cb6-41"><a href="#cb6-41" aria-hidden="true"></a>                    <span class="st">&#39;step&#39;</span> =&gt; <span class="dv">1</span><span class="ot">,</span></span>
<span id="cb6-42"><a href="#cb6-42" aria-hidden="true"></a>                    <span class="st">&#39;default_value&#39;</span> =&gt; <span class="dv">5</span><span class="ot">,</span></span>
<span id="cb6-43"><a href="#cb6-43" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-44"><a href="#cb6-44" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb6-45"><a href="#cb6-45" aria-hidden="true"></a>            <span class="st">&#39;location&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-46"><a href="#cb6-46" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-47"><a href="#cb6-47" aria-hidden="true"></a>                    <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb6-48"><a href="#cb6-48" aria-hidden="true"></a>                        <span class="st">&#39;param&#39;</span> =&gt; <span class="st">&#39;block&#39;</span><span class="ot">,</span></span>
<span id="cb6-49"><a href="#cb6-49" aria-hidden="true"></a>                        <span class="st">&#39;operator&#39;</span> =&gt; <span class="st">&#39;==&#39;</span><span class="ot">,</span></span>
<span id="cb6-50"><a href="#cb6-50" aria-hidden="true"></a>                        <span class="st">&#39;value&#39;</span> =&gt; <span class="st">&#39;acf/testimonial&#39;</span><span class="ot">,</span></span>
<span id="cb6-51"><a href="#cb6-51" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb6-52"><a href="#cb6-52" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb6-53"><a href="#cb6-53" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb6-54"><a href="#cb6-54" aria-hidden="true"></a>        <span class="ot">));</span></span>
<span id="cb6-55"><a href="#cb6-55" aria-hidden="true"></a>    }</span>
<span id="cb6-56"><a href="#cb6-56" aria-hidden="true"></a>}</span>
<span id="cb6-57"><a href="#cb6-57" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;acf/init&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_register_block_fields&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="block-categories">Block Categories</h2>
<p><strong>Built-in Categories</strong>:</p>
<pre><code>&#39;common&#39; - Common
&#39;formatting&#39; - Formatting
&#39;layout&#39; - Layout
&#39;widgets&#39; - Widgets
&#39;embed&#39; - Embeds</code></pre>
<p><strong>Custom Category</strong>:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_block_categories<span class="ot">(</span><span class="kw">$categories</span><span class="ot">)</span> {</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a>    <span class="kw">return</span> <span class="fu">array_merge</span><span class="ot">(</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a>        <span class="kw">$categories</span><span class="ot">,</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a>            <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a>                <span class="st">&#39;slug&#39;</span> =&gt; <span class="st">&#39;custom-blocks&#39;</span><span class="ot">,</span></span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a>                <span class="st">&#39;title&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Custom Blocks&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a>                <span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;admin-customizer&#39;</span><span class="ot">,</span></span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a>        <span class="ot">)</span></span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a>    <span class="ot">);</span></span>
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true"></a>}</span>
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true"></a>add_filter<span class="ot">(</span><span class="st">&#39;block_categories_all&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_block_categories&#39;</span><span class="ot">,</span> <span class="dv">10</span><span class="ot">,</span> <span class="dv">2</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="block-icons">Block Icons</h2>
<p><strong>Dashicon Icon</strong>:</p>
<div class="sourceCode" id="cb9">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;format-quote&#39;</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a><span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;admin-users&#39;</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true"></a><span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;heart&#39;</span></span></code></pre>
</div>
<p><strong>Custom SVG Icon</strong>:</p>
<div class="sourceCode" id="cb10">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5z&quot;/&gt;&lt;/svg&gt;&#39;</span></span></code></pre>
</div>
<p><strong>Icon with Background</strong>:</p>
<div class="sourceCode" id="cb11">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="st">&#39;icon&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a>    <span class="st">&#39;background&#39;</span> =&gt; <span class="st">&#39;#7e70af&#39;</span><span class="ot">,</span></span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true"></a>    <span class="st">&#39;foreground&#39;</span> =&gt; <span class="st">&#39;#fff&#39;</span><span class="ot">,</span></span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true"></a>    <span class="st">&#39;src&#39;</span> =&gt; <span class="st">&#39;format-quote&#39;</span><span class="ot">,</span></span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="block-modes">Block Modes</h2>
<p><strong>Mode Options</strong>:</p>
<div class="sourceCode" id="cb12">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="co">// Preview mode (default)</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a><span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;preview&#39;</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true"></a></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true"></a><span class="co">// Edit mode (show fields)</span></span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true"></a><span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;edit&#39;</span></span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true"></a></span>
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true"></a><span class="co">// Auto switch</span></span>
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true"></a><span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;auto&#39;</span></span></code></pre>
</div>
<p><strong>Allow Mode Switching</strong>:</p>
<div class="sourceCode" id="cb13">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true"></a><span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true"></a>    <span class="st">&#39;mode&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span> <span class="co">// Allow users to toggle</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="block-alignment">Block Alignment</h2>
<p><strong>Set Default Alignment</strong>:</p>
<div class="sourceCode" id="cb14">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true"></a><span class="st">&#39;align&#39;</span> =&gt; <span class="st">&#39;full&#39;</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true"></a><span class="st">&#39;align&#39;</span> =&gt; <span class="st">&#39;wide&#39;</span></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true"></a><span class="st">&#39;align&#39;</span> =&gt; <span class="st">&#39;center&#39;</span></span></code></pre>
</div>
<p><strong>Enable Alignment Control</strong>:</p>
<div class="sourceCode" id="cb15">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true"></a><span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true"></a>    <span class="st">&#39;align&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span> <span class="co">// Enable alignment toolbar</span></span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true"></a>    <span class="st">&#39;align&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;left&#39;</span><span class="ot">,</span> <span class="st">&#39;center&#39;</span><span class="ot">,</span> <span class="st">&#39;right&#39;</span><span class="ot">),</span> <span class="co">// Specific alignments</span></span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="innerblocks-support">InnerBlocks Support</h2>
<p><strong>Enable Nested Blocks</strong>:</p>
<div class="sourceCode" id="cb16">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true"></a><span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a>    <span class="st">&#39;jsx&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<p><strong>Template with InnerBlocks</strong>:</p>
<div class="sourceCode" id="cb17">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true"></a>&lt;div <span class="kw">class</span>=<span class="st">&quot;container-block&quot;</span>&gt;</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;container-header&quot;</span>&gt;</span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true"></a>        &lt;h2&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span>get_field<span class="ot">(</span><span class="st">&#39;title&#39;</span><span class="ot">));</span> <span class="kw">?&gt;</span>&lt;/h2&gt;</span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true"></a></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;container-content&quot;</span>&gt;</span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true"></a>        &lt;InnerBlocks /&gt;</span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true"></a>&lt;/div&gt;</span></code></pre>
</div>
<h2 id="block-example-preview">Block Example (Preview)</h2>
<p><strong>Provide Preview Data</strong>:</p>
<div class="sourceCode" id="cb18">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true"></a><span class="st">&#39;example&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true"></a>    <span class="st">&#39;attributes&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true"></a>        <span class="st">&#39;mode&#39;</span> =&gt; <span class="st">&#39;preview&#39;</span><span class="ot">,</span></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true"></a>        <span class="st">&#39;data&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true"></a>            <span class="st">&#39;author&#39;</span> =&gt; <span class="st">&#39;Jane Smith&#39;</span><span class="ot">,</span></span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true"></a>            <span class="st">&#39;company&#39;</span> =&gt; <span class="st">&#39;Acme Corp&#39;</span><span class="ot">,</span></span>
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true"></a>            <span class="st">&#39;quote&#39;</span> =&gt; <span class="st">&#39;This is an amazing product!&#39;</span><span class="ot">,</span></span>
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true"></a>            <span class="st">&#39;rating&#39;</span> =&gt; <span class="st">&#39;5&#39;</span><span class="ot">,</span></span>
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="enqueue-block-assets">Enqueue Block Assets</h2>
<p><strong>Separate CSS/JS Files</strong>:</p>
<div class="sourceCode" id="cb19">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true"></a><span class="st">&#39;enqueue_style&#39;</span> =&gt; get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.css&#39;</span><span class="ot">,</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true"></a><span class="st">&#39;enqueue_script&#39;</span> =&gt; get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.js&#39;</span><span class="ot">,</span></span></code></pre>
</div>
<p><strong>Asset Callback Function</strong>:</p>
<div class="sourceCode" id="cb20">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true"></a><span class="st">&#39;enqueue_assets&#39;</span> =&gt; <span class="kw">function</span><span class="ot">()</span> {</span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true"></a>    wp_enqueue_style<span class="ot">(</span><span class="st">&#39;testimonial-block&#39;</span><span class="ot">,</span> get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.css&#39;</span><span class="ot">);</span></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true"></a>    wp_enqueue_script<span class="ot">(</span><span class="st">&#39;testimonial-block&#39;</span><span class="ot">,</span> get_template_directory_uri<span class="ot">()</span> . <span class="st">&#39;/blocks/testimonial.js&#39;</span><span class="ot">,</span> <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;jquery&#39;</span><span class="ot">),</span> <span class="st">&#39;1.0&#39;</span><span class="ot">,</span> <span class="kw">true</span><span class="ot">);</span></span>
<span id="cb20-4"><a href="#cb20-4" aria-hidden="true"></a>}</span></code></pre>
</div>
<h2 id="render-callback">Render Callback</h2>
<p><strong>Use Function Instead of Template</strong>:</p>
<div class="sourceCode" id="cb21">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true"></a><span class="st">&#39;render_callback&#39;</span> =&gt; <span class="st">&#39;mytheme_render_testimonial&#39;</span></span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true"></a></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true"></a><span class="kw">function</span> mytheme_render_testimonial<span class="ot">(</span><span class="kw">$block</span><span class="ot">,</span> <span class="kw">$content</span> = <span class="st">&#39;&#39;</span><span class="ot">,</span> <span class="kw">$is_preview</span> = <span class="kw">false</span><span class="ot">,</span> <span class="kw">$post_id</span> = <span class="dv">0</span><span class="ot">)</span> {</span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true"></a>    <span class="kw">$author</span> = get_field<span class="ot">(</span><span class="st">&#39;author&#39;</span><span class="ot">);</span></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true"></a>    <span class="kw">$quote</span> = get_field<span class="ot">(</span><span class="st">&#39;quote&#39;</span><span class="ot">);</span></span>
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true"></a></span>
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;&lt;div class=&quot;testimonial-block&quot;&gt;&#39;</span><span class="ot">;</span></span>
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;&lt;blockquote&gt;&#39;</span> . esc_html<span class="ot">(</span><span class="kw">$quote</span><span class="ot">)</span> . <span class="st">&#39;&lt;/blockquote&gt;&#39;</span><span class="ot">;</span></span>
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;&lt;cite&gt;&#39;</span> . esc_html<span class="ot">(</span><span class="kw">$author</span><span class="ot">)</span> . <span class="st">&#39;&lt;/cite&gt;&#39;</span><span class="ot">;</span></span>
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;&lt;/div&gt;&#39;</span><span class="ot">;</span></span>
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true"></a>}</span></code></pre>
</div>
<h2 id="block-wrapper-attributes">Block Wrapper Attributes</h2>
<p><strong>Add Custom Attributes</strong>:</p>
<div class="sourceCode" id="cb22">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true"></a><span class="kw">$block_attributes</span> = get_block_wrapper_attributes<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true"></a>    <span class="st">&#39;class&#39;</span> =&gt; <span class="st">&#39;additional-class&#39;</span><span class="ot">,</span></span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true"></a>    <span class="st">&#39;data-custom&#39;</span> =&gt; <span class="st">&#39;value&#39;</span><span class="ot">,</span></span>
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true"></a><span class="ot">));</span></span>
<span id="cb22-6"><a href="#cb22-6" aria-hidden="true"></a><span class="kw">?&gt;</span></span>
<span id="cb22-7"><a href="#cb22-7" aria-hidden="true"></a></span>
<span id="cb22-8"><a href="#cb22-8" aria-hidden="true"></a>&lt;div &lt;<span class="ot">?</span>php <span class="kw">echo</span> <span class="kw">$block_attributes</span><span class="ot">;</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb22-9"><a href="#cb22-9" aria-hidden="true"></a>    &lt;!-- Block content --&gt;</span>
<span id="cb22-10"><a href="#cb22-10" aria-hidden="true"></a>&lt;/div&gt;</span></code></pre>
</div>
<h2 id="restrict-block-to-post-types">Restrict Block to Post Types</h2>
<p><strong>Limit Where Block Appears</strong>:</p>
<div class="sourceCode" id="cb23">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true"></a><span class="st">&#39;post_types&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;post&#39;</span><span class="ot">,</span> <span class="st">&#39;page&#39;</span><span class="ot">)</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true"></a><span class="st">&#39;post_types&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;portfolio&#39;</span><span class="ot">)</span></span></code></pre>
</div>
<h2 id="multiple-block-instances">Multiple Block Instances</h2>
<p><strong>Control Block Duplication</strong>:</p>
<div class="sourceCode" id="cb24">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true"></a><span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true"></a>    <span class="st">&#39;multiple&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span> <span class="co">// Allow multiple instances</span></span>
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true"></a><span class="ot">)</span></span>
<span id="cb24-4"><a href="#cb24-4" aria-hidden="true"></a></span>
<span id="cb24-5"><a href="#cb24-5" aria-hidden="true"></a><span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb24-6"><a href="#cb24-6" aria-hidden="true"></a>    <span class="st">&#39;multiple&#39;</span> =&gt; <span class="kw">false</span><span class="ot">,</span> <span class="co">// Single instance only</span></span>
<span id="cb24-7"><a href="#cb24-7" aria-hidden="true"></a><span class="ot">)</span></span></code></pre>
</div>
<h2 id="block-templates">Block Templates</h2>
<p><strong>Pre-populate Post with Blocks</strong>:</p>
<div class="sourceCode" id="cb25">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true"></a><span class="kw">function</span> mytheme_register_template<span class="ot">()</span> {</span>
<span id="cb25-2"><a href="#cb25-2" aria-hidden="true"></a>    <span class="kw">$post_type_object</span> = get_post_type_object<span class="ot">(</span><span class="st">&#39;portfolio&#39;</span><span class="ot">);</span></span>
<span id="cb25-3"><a href="#cb25-3" aria-hidden="true"></a>    <span class="kw">$post_type_object</span>-&gt;template = <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb25-4"><a href="#cb25-4" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;acf/testimonial&#39;</span><span class="ot">,</span> <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb25-5"><a href="#cb25-5" aria-hidden="true"></a>            <span class="st">&#39;author&#39;</span> =&gt; <span class="st">&#39;Default Author&#39;</span><span class="ot">,</span></span>
<span id="cb25-6"><a href="#cb25-6" aria-hidden="true"></a>            <span class="st">&#39;quote&#39;</span> =&gt; <span class="st">&#39;Add your testimonial here&#39;</span><span class="ot">,</span></span>
<span id="cb25-7"><a href="#cb25-7" aria-hidden="true"></a>        <span class="ot">)),</span></span>
<span id="cb25-8"><a href="#cb25-8" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;core/paragraph&#39;</span><span class="ot">,</span> <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb25-9"><a href="#cb25-9" aria-hidden="true"></a>            <span class="st">&#39;placeholder&#39;</span> =&gt; <span class="st">&#39;Add project description...&#39;</span><span class="ot">,</span></span>
<span id="cb25-10"><a href="#cb25-10" aria-hidden="true"></a>        <span class="ot">)),</span></span>
<span id="cb25-11"><a href="#cb25-11" aria-hidden="true"></a>    <span class="ot">);</span></span>
<span id="cb25-12"><a href="#cb25-12" aria-hidden="true"></a>}</span>
<span id="cb25-13"><a href="#cb25-13" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;init&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme_register_template&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="complete-block-example">Complete Block Example</h2>
<p><strong>Hero Block with Multiple Fields</strong>:</p>
<div class="sourceCode" id="cb26">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true"></a><span class="co">// Registration</span></span>
<span id="cb26-2"><a href="#cb26-2" aria-hidden="true"></a>acf_register_block_type<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-3"><a href="#cb26-3" aria-hidden="true"></a>    <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;hero&#39;</span><span class="ot">,</span></span>
<span id="cb26-4"><a href="#cb26-4" aria-hidden="true"></a>    <span class="st">&#39;title&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Hero Section&#39;</span><span class="ot">),</span></span>
<span id="cb26-5"><a href="#cb26-5" aria-hidden="true"></a>    <span class="st">&#39;render_template&#39;</span> =&gt; <span class="st">&#39;blocks/hero.php&#39;</span><span class="ot">,</span></span>
<span id="cb26-6"><a href="#cb26-6" aria-hidden="true"></a>    <span class="st">&#39;category&#39;</span> =&gt; <span class="st">&#39;layout&#39;</span><span class="ot">,</span></span>
<span id="cb26-7"><a href="#cb26-7" aria-hidden="true"></a>    <span class="st">&#39;icon&#39;</span> =&gt; <span class="st">&#39;cover-image&#39;</span><span class="ot">,</span></span>
<span id="cb26-8"><a href="#cb26-8" aria-hidden="true"></a>    <span class="st">&#39;supports&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-9"><a href="#cb26-9" aria-hidden="true"></a>        <span class="st">&#39;align&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;full&#39;</span><span class="ot">),</span></span>
<span id="cb26-10"><a href="#cb26-10" aria-hidden="true"></a>        <span class="st">&#39;mode&#39;</span> =&gt; <span class="kw">false</span><span class="ot">,</span></span>
<span id="cb26-11"><a href="#cb26-11" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb26-12"><a href="#cb26-12" aria-hidden="true"></a><span class="ot">));</span></span>
<span id="cb26-13"><a href="#cb26-13" aria-hidden="true"></a></span>
<span id="cb26-14"><a href="#cb26-14" aria-hidden="true"></a><span class="co">// Fields</span></span>
<span id="cb26-15"><a href="#cb26-15" aria-hidden="true"></a>acf_add_local_field_group<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-16"><a href="#cb26-16" aria-hidden="true"></a>    <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;group_hero&#39;</span><span class="ot">,</span></span>
<span id="cb26-17"><a href="#cb26-17" aria-hidden="true"></a>    <span class="st">&#39;title&#39;</span> =&gt; <span class="st">&#39;Hero Block&#39;</span><span class="ot">,</span></span>
<span id="cb26-18"><a href="#cb26-18" aria-hidden="true"></a>    <span class="st">&#39;fields&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-19"><a href="#cb26-19" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-20"><a href="#cb26-20" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_hero_title&#39;</span><span class="ot">,</span></span>
<span id="cb26-21"><a href="#cb26-21" aria-hidden="true"></a>            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Title&#39;</span><span class="ot">,</span></span>
<span id="cb26-22"><a href="#cb26-22" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;title&#39;</span><span class="ot">,</span></span>
<span id="cb26-23"><a href="#cb26-23" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb26-24"><a href="#cb26-24" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb26-25"><a href="#cb26-25" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-26"><a href="#cb26-26" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_hero_subtitle&#39;</span><span class="ot">,</span></span>
<span id="cb26-27"><a href="#cb26-27" aria-hidden="true"></a>            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Subtitle&#39;</span><span class="ot">,</span></span>
<span id="cb26-28"><a href="#cb26-28" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;subtitle&#39;</span><span class="ot">,</span></span>
<span id="cb26-29"><a href="#cb26-29" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;text&#39;</span><span class="ot">,</span></span>
<span id="cb26-30"><a href="#cb26-30" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb26-31"><a href="#cb26-31" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-32"><a href="#cb26-32" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_hero_bg&#39;</span><span class="ot">,</span></span>
<span id="cb26-33"><a href="#cb26-33" aria-hidden="true"></a>            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Background Image&#39;</span><span class="ot">,</span></span>
<span id="cb26-34"><a href="#cb26-34" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;background_image&#39;</span><span class="ot">,</span></span>
<span id="cb26-35"><a href="#cb26-35" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;image&#39;</span><span class="ot">,</span></span>
<span id="cb26-36"><a href="#cb26-36" aria-hidden="true"></a>            <span class="st">&#39;return_format&#39;</span> =&gt; <span class="st">&#39;url&#39;</span><span class="ot">,</span></span>
<span id="cb26-37"><a href="#cb26-37" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb26-38"><a href="#cb26-38" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-39"><a href="#cb26-39" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span> =&gt; <span class="st">&#39;field_hero_button&#39;</span><span class="ot">,</span></span>
<span id="cb26-40"><a href="#cb26-40" aria-hidden="true"></a>            <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Button&#39;</span><span class="ot">,</span></span>
<span id="cb26-41"><a href="#cb26-41" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span> =&gt; <span class="st">&#39;button&#39;</span><span class="ot">,</span></span>
<span id="cb26-42"><a href="#cb26-42" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span> =&gt; <span class="st">&#39;link&#39;</span><span class="ot">,</span></span>
<span id="cb26-43"><a href="#cb26-43" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb26-44"><a href="#cb26-44" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb26-45"><a href="#cb26-45" aria-hidden="true"></a>    <span class="st">&#39;location&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-46"><a href="#cb26-46" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-47"><a href="#cb26-47" aria-hidden="true"></a>            <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb26-48"><a href="#cb26-48" aria-hidden="true"></a>                <span class="st">&#39;param&#39;</span> =&gt; <span class="st">&#39;block&#39;</span><span class="ot">,</span></span>
<span id="cb26-49"><a href="#cb26-49" aria-hidden="true"></a>                <span class="st">&#39;operator&#39;</span> =&gt; <span class="st">&#39;==&#39;</span><span class="ot">,</span></span>
<span id="cb26-50"><a href="#cb26-50" aria-hidden="true"></a>                <span class="st">&#39;value&#39;</span> =&gt; <span class="st">&#39;acf/hero&#39;</span><span class="ot">,</span></span>
<span id="cb26-51"><a href="#cb26-51" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb26-52"><a href="#cb26-52" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb26-53"><a href="#cb26-53" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb26-54"><a href="#cb26-54" aria-hidden="true"></a><span class="ot">));</span></span></code></pre>
</div>
<p><strong>Template (blocks/hero.php)</strong>:</p>
<div class="sourceCode" id="cb27">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true"></a><span class="kw">$title</span> = get_field<span class="ot">(</span><span class="st">&#39;title&#39;</span><span class="ot">);</span></span>
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true"></a><span class="kw">$subtitle</span> = get_field<span class="ot">(</span><span class="st">&#39;subtitle&#39;</span><span class="ot">);</span></span>
<span id="cb27-4"><a href="#cb27-4" aria-hidden="true"></a><span class="kw">$bg_image</span> = get_field<span class="ot">(</span><span class="st">&#39;background_image&#39;</span><span class="ot">);</span></span>
<span id="cb27-5"><a href="#cb27-5" aria-hidden="true"></a><span class="kw">$button</span> = get_field<span class="ot">(</span><span class="st">&#39;button&#39;</span><span class="ot">);</span></span>
<span id="cb27-6"><a href="#cb27-6" aria-hidden="true"></a></span>
<span id="cb27-7"><a href="#cb27-7" aria-hidden="true"></a><span class="kw">$class_name</span> = <span class="st">&#39;hero-block&#39;</span><span class="ot">;</span></span>
<span id="cb27-8"><a href="#cb27-8" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>!<span class="kw">empty</span><span class="ot">(</span><span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;className&#39;</span><span class="ot">]))</span> {</span>
<span id="cb27-9"><a href="#cb27-9" aria-hidden="true"></a>    <span class="kw">$class_name</span> .= <span class="st">&#39; &#39;</span> . <span class="kw">$block</span><span class="ot">[</span><span class="st">&#39;className&#39;</span><span class="ot">];</span></span>
<span id="cb27-10"><a href="#cb27-10" aria-hidden="true"></a>}</span>
<span id="cb27-11"><a href="#cb27-11" aria-hidden="true"></a><span class="kw">?&gt;</span></span>
<span id="cb27-12"><a href="#cb27-12" aria-hidden="true"></a></span>
<span id="cb27-13"><a href="#cb27-13" aria-hidden="true"></a>&lt;section <span class="kw">class</span>=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$class_name</span><span class="st">); ?&gt;&quot;</span></span>
<span id="cb27-14"><a href="#cb27-14" aria-hidden="true"></a>         style=<span class="st">&quot;background-image: url(&lt;?php echo esc_url(</span><span class="kw">$bg_image</span><span class="st">); ?&gt;);&quot;</span>&gt;</span>
<span id="cb27-15"><a href="#cb27-15" aria-hidden="true"></a>    &lt;div <span class="kw">class</span>=<span class="st">&quot;hero-content&quot;</span>&gt;</span>
<span id="cb27-16"><a href="#cb27-16" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$title</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb27-17"><a href="#cb27-17" aria-hidden="true"></a>            &lt;h1 <span class="kw">class</span>=<span class="st">&quot;hero-title&quot;</span>&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$title</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/h1&gt;</span>
<span id="cb27-18"><a href="#cb27-18" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb27-19"><a href="#cb27-19" aria-hidden="true"></a></span>
<span id="cb27-20"><a href="#cb27-20" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$subtitle</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb27-21"><a href="#cb27-21" aria-hidden="true"></a>            &lt;p <span class="kw">class</span>=<span class="st">&quot;hero-subtitle&quot;</span>&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$subtitle</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/p&gt;</span>
<span id="cb27-22"><a href="#cb27-22" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb27-23"><a href="#cb27-23" aria-hidden="true"></a></span>
<span id="cb27-24"><a href="#cb27-24" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$button</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb27-25"><a href="#cb27-25" aria-hidden="true"></a>            &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$button</span><span class="st">[&#39;url&#39;]); ?&gt;&quot;</span></span>
<span id="cb27-26"><a href="#cb27-26" aria-hidden="true"></a>               <span class="kw">class</span>=<span class="st">&quot;hero-button&quot;</span></span>
<span id="cb27-27"><a href="#cb27-27" aria-hidden="true"></a>               target=<span class="st">&quot;&lt;?php echo esc_attr(</span><span class="kw">$button</span><span class="st">[&#39;target&#39;] ?: &#39;_self&#39;); ?&gt;&quot;</span>&gt;</span>
<span id="cb27-28"><a href="#cb27-28" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$button</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">]);</span> <span class="kw">?&gt;</span></span>
<span id="cb27-29"><a href="#cb27-29" aria-hidden="true"></a>            &lt;/a&gt;</span>
<span id="cb27-30"><a href="#cb27-30" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php <span class="kw">endif</span><span class="ot">;</span> <span class="kw">?&gt;</span></span>
<span id="cb27-31"><a href="#cb27-31" aria-hidden="true"></a>    &lt;/div&gt;</span>
<span id="cb27-32"><a href="#cb27-32" aria-hidden="true"></a>&lt;/section&gt;</span></code></pre>
</div>
<h2 id="best-practices">Best Practices</h2>
<p><strong>Organize Block Files</strong>:</p>
<pre><code>theme/
├── blocks/
│   ├── testimonial/
│   │   ├── block.php
│   │   ├── fields.php
│   │   ├── style.css
│   │   └── script.js
│   └── hero/
│       ├── block.php
│       ├── fields.php
│       └── style.css</code></pre>
<p><strong>Use Block Wrapper</strong>:</p>
<div class="sourceCode" id="cb29">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true"></a><span class="co">// Good - uses wrapper</span></span>
<span id="cb29-2"><a href="#cb29-2" aria-hidden="true"></a>&lt;div &lt;<span class="ot">?</span>php <span class="kw">echo</span> get_block_wrapper_attributes<span class="ot">();</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb29-3"><a href="#cb29-3" aria-hidden="true"></a>    &lt;!-- Content --&gt;</span>
<span id="cb29-4"><a href="#cb29-4" aria-hidden="true"></a>&lt;/div&gt;</span>
<span id="cb29-5"><a href="#cb29-5" aria-hidden="true"></a></span>
<span id="cb29-6"><a href="#cb29-6" aria-hidden="true"></a><span class="co">// Better - adds custom classes</span></span>
<span id="cb29-7"><a href="#cb29-7" aria-hidden="true"></a>&lt;<span class="ot">?</span>php</span>
<span id="cb29-8"><a href="#cb29-8" aria-hidden="true"></a><span class="kw">$attributes</span> = get_block_wrapper_attributes<span class="ot">(</span><span class="kw">array</span><span class="ot">(</span></span>
<span id="cb29-9"><a href="#cb29-9" aria-hidden="true"></a>    <span class="st">&#39;class&#39;</span> =&gt; <span class="st">&#39;custom-class&#39;</span><span class="ot">,</span></span>
<span id="cb29-10"><a href="#cb29-10" aria-hidden="true"></a><span class="ot">));</span></span>
<span id="cb29-11"><a href="#cb29-11" aria-hidden="true"></a><span class="kw">?&gt;</span></span>
<span id="cb29-12"><a href="#cb29-12" aria-hidden="true"></a>&lt;div &lt;<span class="ot">?</span>php <span class="kw">echo</span> <span class="kw">$attributes</span><span class="ot">;</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb29-13"><a href="#cb29-13" aria-hidden="true"></a>    &lt;!-- Content --&gt;</span>
<span id="cb29-14"><a href="#cb29-14" aria-hidden="true"></a>&lt;/div&gt;</span></code></pre>
</div>
<p><strong>Escape Output</strong>:</p>
<div class="sourceCode" id="cb30">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$text</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_url<span class="ot">(</span><span class="kw">$url</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb30-3"><a href="#cb30-3" aria-hidden="true"></a><span class="kw">&lt;?php</span> <span class="kw">echo</span> esc_attr<span class="ot">(</span><span class="kw">$attribute</span><span class="ot">);</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="conclusion">Conclusion</h2>
<p>ACF Blocks enable custom Gutenberg block creation through PHP registration eliminating React JavaScript requirements while maintaining block editor flexibility. Register blocks with acf_register_block_type(), create field groups targeting specific blocks, render with PHP templates accessing fields via get_field(), and implement block supports for alignment, modes, and InnerBlocks. ACF Blocks combine familiar ACF workflows with modern block editor capabilities creating maintainable custom WordPress blocks through PHP.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://www.advancedcustomfields.com/resources/blocks/">ACF Blocks Documentation</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/acf_register_block_type/">acf_register_block_type() Function</a></li>
<li><a href="https://developer.wordpress.org/block-editor/reference-guides/block-api/block-templates/">Block Templates</a></li>
<li><a href="https://developer.wordpress.org/block-editor/reference-guides/components/inner-blocks/">InnerBlocks</a></li>
<li><a href="https://developer.wordpress.org/reference/functions/get_block_wrapper_attributes/">Block Wrapper Attributes</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Custom block configurations need backup protection. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> backs up your WordPress ACF block files and field configurations automatically. Safeguard your Gutenberg blocks—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/acf-and-gutenberg-integrating-custom-fields-with-block-editor/">ACF and Gutenberg: Integrating Custom Fields with Block Editor</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
