<?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>Advanced Custom Fields (ACF) Tutorials Archives - Developry Plugins</title>
	<atom:link href="https://developryplugins.com/category/advanced-custom-fields-acf-tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>https://developryplugins.com/category/advanced-custom-fields-acf-tutorials/</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>Advanced Custom Fields (ACF) Tutorials Archives - Developry Plugins</title>
	<link>https://developryplugins.com/category/advanced-custom-fields-acf-tutorials/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ACF Tutorial: Building Custom Post Types with Advanced Custom Fields</title>
		<link>https://developryplugins.com/acf-tutorial-building-custom-post-types-with-advanced-custom-fields/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Mon, 10 Nov 2025 09:00:00 +0000</pubDate>
				<category><![CDATA[Advanced Custom Fields (ACF) Tutorials]]></category>
		<category><![CDATA[acf]]></category>
		<category><![CDATA[acf tutorial]]></category>
		<category><![CDATA[advanced custom fields]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[custom post types]]></category>
		<guid isPermaLink="false">https://developryplugins.com/?p=111</guid>

					<description><![CDATA[<p>Advanced Custom Fields transforms WordPress custom post types from basic content containers into feature-rich data structures through intuitive field group interfaces. From text fields and image uploads to relationship fields...</p>
<p>The post <a href="https://developryplugins.com/acf-tutorial-building-custom-post-types-with-advanced-custom-fields/">ACF Tutorial: Building Custom Post Types with Advanced Custom Fields</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>Advanced Custom Fields transforms WordPress custom post types from basic content containers into feature-rich data structures through intuitive field group interfaces. From text fields and image uploads to relationship fields and repeaters, ACF enables complex content management without custom database tables. This comprehensive tutorial teaches ACF installation, field group creation, custom post type registration, field display techniques, and query integration building professional WordPress applications with ACF.</p>
<h2 id="installing-advanced-custom-fields">Installing Advanced Custom Fields</h2>
<p><strong>Install ACF Plugin</strong>:</p>
<ol type="1">
<li>Plugins → Add New</li>
<li>Search “Advanced Custom Fields”</li>
<li>Install and activate ACF (free) or ACF PRO</li>
</ol>
<p><strong>ACF Free vs PRO</strong>:</p>
<p>Free includes:</p>
<ul>
<li>Basic field types</li>
<li>Field groups</li>
<li>Location rules</li>
</ul>
<p>PRO adds:</p>
<ul>
<li>Repeater fields</li>
<li>Flexible content</li>
<li>Gallery fields</li>
<li>Clone fields</li>
<li>Options pages</li>
</ul>
<h2 id="registering-custom-post-type">Registering Custom Post Type</h2>
<p><strong>Register Portfolio CPT</strong> (functions.php):</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">function</span> mytheme_register_portfolio<span class="ot">()</span> {</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true"></a>    register_post_type<span class="ot">(</span><span class="st">&#39;portfolio&#39;</span><span class="ot">,</span> <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true"></a>        <span class="st">&#39;labels&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true"></a>            <span class="st">&#39;name&#39;</span>          =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Portfolio&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true"></a>            <span class="st">&#39;singular_name&#39;</span> =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Portfolio Item&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true"></a>            <span class="st">&#39;add_new&#39;</span>       =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Add New&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true"></a>            <span class="st">&#39;add_new_item&#39;</span>  =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Add New Portfolio Item&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true"></a>            <span class="st">&#39;edit_item&#39;</span>     =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Edit Portfolio Item&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true"></a>            <span class="st">&#39;new_item&#39;</span>      =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;New Portfolio Item&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true"></a>            <span class="st">&#39;view_item&#39;</span>     =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;View Portfolio Item&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true"></a>            <span class="st">&#39;search_items&#39;</span>  =&gt; <span class="kw">__</span><span class="ot">(</span><span class="st">&#39;Search Portfolio&#39;</span><span class="ot">,</span> <span class="st">&#39;mytheme&#39;</span><span class="ot">),</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true"></a>        <span class="st">&#39;public&#39;</span>       =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true"></a>        <span class="st">&#39;has_archive&#39;</span>  =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true"></a>        <span class="st">&#39;rewrite&#39;</span>      =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;slug&#39;</span> =&gt; <span class="st">&#39;portfolio&#39;</span><span class="ot">),</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true"></a>        <span class="st">&#39;supports&#39;</span>     =&gt; <span class="kw">array</span><span class="ot">(</span><span class="st">&#39;title&#39;</span><span class="ot">,</span> <span class="st">&#39;editor&#39;</span><span class="ot">,</span> <span class="st">&#39;thumbnail&#39;</span><span class="ot">,</span> <span class="st">&#39;excerpt&#39;</span><span class="ot">),</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true"></a>        <span class="st">&#39;menu_icon&#39;</span>    =&gt; <span class="st">&#39;dashicons-portfolio&#39;</span><span class="ot">,</span></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true"></a>        <span class="st">&#39;show_in_rest&#39;</span> =&gt; <span class="kw">true</span><span class="ot">,</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true"></a>    <span class="ot">));</span></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true"></a>}</span>
<span id="cb1-21"><a href="#cb1-21" 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_portfolio&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="creating-field-groups">Creating Field Groups</h2>
<p><strong>Add Field Group via ACF UI</strong>:</p>
<ol type="1">
<li>Custom Fields → Add New</li>
<li>Title: “Portfolio Fields”</li>
<li>Add fields (see below)</li>
<li>Location Rules: Post Type = Portfolio</li>
<li>Publish</li>
</ol>
<p><strong>Field Configuration Example</strong>:</p>
<p><strong>Client Name</strong> (Text):</p>
<ul>
<li>Field Label: Client Name</li>
<li>Field Name: client_name</li>
<li>Field Type: Text</li>
<li>Required: Yes</li>
</ul>
<p><strong>Project URL</strong> (URL):</p>
<ul>
<li>Field Label: Project URL</li>
<li>Field Name: project_url</li>
<li>Field Type: URL</li>
</ul>
<p><strong>Project Date</strong> (Date Picker):</p>
<ul>
<li>Field Label: Project Date</li>
<li>Field Name: project_date</li>
<li>Field Type: Date Picker</li>
<li>Display Format: d/m/Y</li>
<li>Return Format: Y-m-d</li>
</ul>
<p><strong>Project Images</strong> (Gallery &#8211; PRO):</p>
<ul>
<li>Field Label: Project Images</li>
<li>Field Name: project_images</li>
<li>Field Type: Gallery</li>
<li>Min/Max: Min 1, Max 10</li>
</ul>
<p><strong>Technologies Used</strong> (Checkbox):</p>
<ul>
<li>Field Label: Technologies</li>
<li>Field Name: technologies</li>
<li>Field Type: Checkbox</li>
<li>Choices:
<ul>
<li>wordpress : WordPress</li>
<li>php : PHP</li>
<li>javascript : JavaScript</li>
<li>react : React</li>
</ul>
</li>
</ul>
<h2 id="common-field-types">Common Field Types</h2>
<p><strong>Text Field</strong>:</p>
<pre><code>Field Type: Text
Used for: Short text (names, titles)
Returns: String</code></pre>
<p><strong>Textarea</strong>:</p>
<pre><code>Field Type: Textarea
Used for: Long text (descriptions)
Returns: String</code></pre>
<p><strong>Number</strong>:</p>
<pre><code>Field Type: Number
Used for: Numeric values
Returns: Integer/Float</code></pre>
<p><strong>Email</strong>:</p>
<pre><code>Field Type: Email
Used for: Email addresses
Returns: String (email)</code></pre>
<p><strong>URL</strong>:</p>
<pre><code>Field Type: URL
Used for: Web addresses
Returns: String (URL)</code></pre>
<p><strong>Image</strong>:</p>
<pre><code>Field Type: Image
Return Format: Array/URL/ID
Returns: Image data</code></pre>
<p><strong>File</strong>:</p>
<pre><code>Field Type: File
Return Format: Array/URL/ID
Returns: File data</code></pre>
<p><strong>Select</strong>:</p>
<pre><code>Field Type: Select
Used for: Dropdown selection
Returns: Selected value(s)</code></pre>
<p><strong>Checkbox</strong>:</p>
<pre><code>Field Type: Checkbox
Used for: Multiple selections
Returns: Array of values</code></pre>
<p><strong>Radio Button</strong>:</p>
<pre><code>Field Type: Radio Button
Used for: Single selection
Returns: Selected value</code></pre>
<p><strong>True/False</strong>:</p>
<pre><code>Field Type: True/False
Used for: On/off toggle
Returns: Boolean (1/0)</code></pre>
<p><strong>Relationship</strong> (PRO):</p>
<pre><code>Field Type: Relationship
Used for: Link to other posts
Returns: Array of post objects</code></pre>
<p><strong>Repeater</strong> (PRO):</p>
<pre><code>Field Type: Repeater
Used for: Repeating field sets
Returns: Array of field groups</code></pre>
<h2 id="displaying-acf-fields-in-templates">Displaying ACF Fields in Templates</h2>
<p><strong>Single Portfolio Template</strong> (single-portfolio.php):</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> get_header<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true"></a></span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true"></a>&lt;div <span class="kw">class</span>=<span class="st">&quot;portfolio-single&quot;</span>&gt;</span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">while</span> <span class="ot">(</span>have_posts<span class="ot">())</span> <span class="ot">:</span> the_post<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true"></a></span>
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true"></a>        &lt;article id=<span class="st">&quot;post-&lt;?php the_ID(); ?&gt;&quot;</span> &lt;<span class="ot">?</span>php post_class<span class="ot">();</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true"></a>            &lt;<span class="fu">header</span> <span class="kw">class</span>=<span class="st">&quot;entry-header&quot;</span>&gt;</span>
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true"></a>                &lt;h1 <span class="kw">class</span>=<span class="st">&quot;entry-title&quot;</span>&gt;&lt;<span class="ot">?</span>php the_title<span class="ot">();</span> <span class="kw">?&gt;</span>&lt;/h1&gt;</span>
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true"></a></span>
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php</span>
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true"></a>                <span class="co">// Get ACF fields</span></span>
<span id="cb15-12"><a href="#cb15-12" aria-hidden="true"></a>                <span class="kw">$client_name</span> = get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">);</span></span>
<span id="cb15-13"><a href="#cb15-13" aria-hidden="true"></a>                <span class="kw">$project_url</span> = get_field<span class="ot">(</span><span class="st">&#39;project_url&#39;</span><span class="ot">);</span></span>
<span id="cb15-14"><a href="#cb15-14" aria-hidden="true"></a>                <span class="kw">$project_date</span> = get_field<span class="ot">(</span><span class="st">&#39;project_date&#39;</span><span class="ot">);</span></span>
<span id="cb15-15"><a href="#cb15-15" aria-hidden="true"></a>                <span class="kw">$technologies</span> = get_field<span class="ot">(</span><span class="st">&#39;technologies&#39;</span><span class="ot">);</span></span>
<span id="cb15-16"><a href="#cb15-16" aria-hidden="true"></a>                <span class="kw">?&gt;</span></span>
<span id="cb15-17"><a href="#cb15-17" aria-hidden="true"></a></span>
<span id="cb15-18"><a href="#cb15-18" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$client_name</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb15-19"><a href="#cb15-19" aria-hidden="true"></a>                    &lt;p <span class="kw">class</span>=<span class="st">&quot;client-name&quot;</span>&gt;</span>
<span id="cb15-20"><a href="#cb15-20" aria-hidden="true"></a>                        &lt;strong&gt;Client:&lt;/strong&gt; &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$client_name</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb15-21"><a href="#cb15-21" aria-hidden="true"></a>                    &lt;/p&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>
<span id="cb15-23"><a href="#cb15-23" aria-hidden="true"></a></span>
<span id="cb15-24"><a href="#cb15-24" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$project_date</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb15-25"><a href="#cb15-25" aria-hidden="true"></a>                    &lt;p <span class="kw">class</span>=<span class="st">&quot;project-date&quot;</span>&gt;</span>
<span id="cb15-26"><a href="#cb15-26" aria-hidden="true"></a>                        &lt;strong&gt;<span class="fu">Date</span>:&lt;/strong&gt; &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="fu">date</span><span class="ot">(</span><span class="st">&#39;F Y&#39;</span><span class="ot">,</span> <span class="fu">strtotime</span><span class="ot">(</span><span class="kw">$project_date</span><span class="ot">)));</span> <span class="kw">?&gt;</span></span>
<span id="cb15-27"><a href="#cb15-27" aria-hidden="true"></a>                    &lt;/p&gt;</span>
<span id="cb15-28"><a href="#cb15-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="cb15-29"><a href="#cb15-29" aria-hidden="true"></a></span>
<span id="cb15-30"><a href="#cb15-30" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$project_url</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb15-31"><a href="#cb15-31" aria-hidden="true"></a>                    &lt;p <span class="kw">class</span>=<span class="st">&quot;project-url&quot;</span>&gt;</span>
<span id="cb15-32"><a href="#cb15-32" aria-hidden="true"></a>                        &lt;a href=<span class="st">&quot;&lt;?php echo esc_url(</span><span class="kw">$project_url</span><span class="st">); ?&gt;&quot;</span> target=<span class="st">&quot;_blank&quot;</span>&gt;</span>
<span id="cb15-33"><a href="#cb15-33" aria-hidden="true"></a>                            View Live Project</span>
<span id="cb15-34"><a href="#cb15-34" aria-hidden="true"></a>                        &lt;/a&gt;</span>
<span id="cb15-35"><a href="#cb15-35" aria-hidden="true"></a>                    &lt;/p&gt;</span>
<span id="cb15-36"><a href="#cb15-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="cb15-37"><a href="#cb15-37" aria-hidden="true"></a></span>
<span id="cb15-38"><a href="#cb15-38" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$technologies</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb15-39"><a href="#cb15-39" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;technologies&quot;</span>&gt;</span>
<span id="cb15-40"><a href="#cb15-40" aria-hidden="true"></a>                        &lt;strong&gt;Technologies:&lt;/strong&gt;</span>
<span id="cb15-41"><a href="#cb15-41" aria-hidden="true"></a>                        &lt;ul&gt;</span>
<span id="cb15-42"><a href="#cb15-42" aria-hidden="true"></a>                            &lt;<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$technologies</span> <span class="kw">as</span> <span class="kw">$tech</span><span class="ot">)</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb15-43"><a href="#cb15-43" aria-hidden="true"></a>                                &lt;li&gt;&lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$tech</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/li&gt;</span>
<span id="cb15-44"><a href="#cb15-44" 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-45"><a href="#cb15-45" aria-hidden="true"></a>                        &lt;/ul&gt;</span>
<span id="cb15-46"><a href="#cb15-46" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb15-47"><a href="#cb15-47" 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="cb15-48"><a href="#cb15-48" aria-hidden="true"></a>            &lt;/<span class="fu">header</span>&gt;</span>
<span id="cb15-49"><a href="#cb15-49" aria-hidden="true"></a></span>
<span id="cb15-50"><a href="#cb15-50" aria-hidden="true"></a>            &lt;div <span class="kw">class</span>=<span class="st">&quot;entry-content&quot;</span>&gt;</span>
<span id="cb15-51"><a href="#cb15-51" aria-hidden="true"></a>                &lt;<span class="ot">?</span>php the_content<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb15-52"><a href="#cb15-52" aria-hidden="true"></a>            &lt;/div&gt;</span>
<span id="cb15-53"><a href="#cb15-53" aria-hidden="true"></a></span>
<span id="cb15-54"><a href="#cb15-54" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php</span>
<span id="cb15-55"><a href="#cb15-55" aria-hidden="true"></a>            <span class="co">// Display gallery (ACF PRO)</span></span>
<span id="cb15-56"><a href="#cb15-56" aria-hidden="true"></a>            <span class="kw">$images</span> = get_field<span class="ot">(</span><span class="st">&#39;project_images&#39;</span><span class="ot">);</span></span>
<span id="cb15-57"><a href="#cb15-57" aria-hidden="true"></a>            <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="cb15-58"><a href="#cb15-58" aria-hidden="true"></a>                &lt;div <span class="kw">class</span>=<span class="st">&quot;project-gallery&quot;</span>&gt;</span>
<span id="cb15-59"><a href="#cb15-59" 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="cb15-60"><a href="#cb15-60" aria-hidden="true"></a>                        &lt;div <span class="kw">class</span>=<span class="st">&quot;gallery-item&quot;</span>&gt;</span>
<span id="cb15-61"><a href="#cb15-61" 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> data-lightbox=<span class="st">&quot;portfolio&quot;</span>&gt;</span>
<span id="cb15-62"><a href="#cb15-62" 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-63"><a href="#cb15-63" 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="cb15-64"><a href="#cb15-64" aria-hidden="true"></a>                            &lt;/a&gt;</span>
<span id="cb15-65"><a href="#cb15-65" aria-hidden="true"></a>                        &lt;/div&gt;</span>
<span id="cb15-66"><a href="#cb15-66" 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-67"><a href="#cb15-67" aria-hidden="true"></a>                &lt;/div&gt;</span>
<span id="cb15-68"><a href="#cb15-68" 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="cb15-69"><a href="#cb15-69" aria-hidden="true"></a>        &lt;/article&gt;</span>
<span id="cb15-70"><a href="#cb15-70" aria-hidden="true"></a></span>
<span id="cb15-71"><a href="#cb15-71" 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="cb15-72"><a href="#cb15-72" aria-hidden="true"></a>&lt;/div&gt;</span>
<span id="cb15-73"><a href="#cb15-73" aria-hidden="true"></a></span>
<span id="cb15-74"><a href="#cb15-74" aria-hidden="true"></a>&lt;<span class="ot">?</span>php get_footer<span class="ot">();</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="archive-template">Archive Template</h2>
<p><strong>Portfolio Archive</strong> (archive-portfolio.php):</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> get_header<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a>&lt;div <span class="kw">class</span>=<span class="st">&quot;portfolio-archive&quot;</span>&gt;</span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true"></a>    &lt;<span class="fu">header</span> <span class="kw">class</span>=<span class="st">&quot;page-header&quot;</span>&gt;</span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true"></a>        &lt;h1&gt;Portfolio&lt;/h1&gt;</span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true"></a>    &lt;/<span class="fu">header</span>&gt;</span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true"></a></span>
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span>have_posts<span class="ot">())</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb16-9"><a href="#cb16-9" aria-hidden="true"></a>        &lt;div <span class="kw">class</span>=<span class="st">&quot;portfolio-grid&quot;</span>&gt;</span>
<span id="cb16-10"><a href="#cb16-10" aria-hidden="true"></a>            &lt;<span class="ot">?</span>php <span class="kw">while</span> <span class="ot">(</span>have_posts<span class="ot">())</span> <span class="ot">:</span> the_post<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb16-11"><a href="#cb16-11" aria-hidden="true"></a></span>
<span id="cb16-12"><a href="#cb16-12" aria-hidden="true"></a>                &lt;article id=<span class="st">&quot;post-&lt;?php the_ID(); ?&gt;&quot;</span> &lt;<span class="ot">?</span>php post_class<span class="ot">(</span><span class="st">&#39;portfolio-item&#39;</span><span class="ot">);</span> <span class="kw">?&gt;</span>&gt;</span>
<span id="cb16-13"><a href="#cb16-13" aria-hidden="true"></a>                    &lt;<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span>has_post_thumbnail<span class="ot">())</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb16-14"><a href="#cb16-14" aria-hidden="true"></a>                        &lt;div <span class="kw">class</span>=<span class="st">&quot;portfolio-thumbnail&quot;</span>&gt;</span>
<span id="cb16-15"><a href="#cb16-15" aria-hidden="true"></a>                            &lt;a href=<span class="st">&quot;&lt;?php the_permalink(); ?&gt;&quot;</span>&gt;</span>
<span id="cb16-16"><a href="#cb16-16" aria-hidden="true"></a>                                &lt;<span class="ot">?</span>php the_post_thumbnail<span class="ot">(</span><span class="st">&#39;medium&#39;</span><span class="ot">);</span> <span class="kw">?&gt;</span></span>
<span id="cb16-17"><a href="#cb16-17" aria-hidden="true"></a>                            &lt;/a&gt;</span>
<span id="cb16-18"><a href="#cb16-18" aria-hidden="true"></a>                        &lt;/div&gt;</span>
<span id="cb16-19"><a href="#cb16-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="cb16-20"><a href="#cb16-20" aria-hidden="true"></a></span>
<span id="cb16-21"><a href="#cb16-21" aria-hidden="true"></a>                    &lt;div <span class="kw">class</span>=<span class="st">&quot;portfolio-content&quot;</span>&gt;</span>
<span id="cb16-22"><a href="#cb16-22" aria-hidden="true"></a>                        &lt;h2 <span class="kw">class</span>=<span class="st">&quot;entry-title&quot;</span>&gt;</span>
<span id="cb16-23"><a href="#cb16-23" aria-hidden="true"></a>                            &lt;a href=<span class="st">&quot;&lt;?php the_permalink(); ?&gt;&quot;</span>&gt;&lt;<span class="ot">?</span>php the_title<span class="ot">();</span> <span class="kw">?&gt;</span>&lt;/a&gt;</span>
<span id="cb16-24"><a href="#cb16-24" aria-hidden="true"></a>                        &lt;/h2&gt;</span>
<span id="cb16-25"><a href="#cb16-25" aria-hidden="true"></a></span>
<span id="cb16-26"><a href="#cb16-26" aria-hidden="true"></a>                        &lt;<span class="ot">?</span>php</span>
<span id="cb16-27"><a href="#cb16-27" aria-hidden="true"></a>                        <span class="kw">$client_name</span> = get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">);</span></span>
<span id="cb16-28"><a href="#cb16-28" aria-hidden="true"></a>                        <span class="kw">if</span> <span class="ot">(</span><span class="kw">$client_name</span><span class="ot">)</span> <span class="ot">:</span></span>
<span id="cb16-29"><a href="#cb16-29" aria-hidden="true"></a>                            <span class="kw">?&gt;</span></span>
<span id="cb16-30"><a href="#cb16-30" aria-hidden="true"></a>                            &lt;p <span class="kw">class</span>=<span class="st">&quot;client&quot;</span>&gt;Client: &lt;<span class="ot">?</span>php <span class="kw">echo</span> esc_html<span class="ot">(</span><span class="kw">$client_name</span><span class="ot">);</span> <span class="kw">?&gt;</span>&lt;/p&gt;</span>
<span id="cb16-31"><a href="#cb16-31" 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="cb16-32"><a href="#cb16-32" aria-hidden="true"></a></span>
<span id="cb16-33"><a href="#cb16-33" aria-hidden="true"></a>                        &lt;div <span class="kw">class</span>=<span class="st">&quot;entry-excerpt&quot;</span>&gt;</span>
<span id="cb16-34"><a href="#cb16-34" aria-hidden="true"></a>                            &lt;<span class="ot">?</span>php the_excerpt<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb16-35"><a href="#cb16-35" aria-hidden="true"></a>                        &lt;/div&gt;</span>
<span id="cb16-36"><a href="#cb16-36" aria-hidden="true"></a></span>
<span id="cb16-37"><a href="#cb16-37" aria-hidden="true"></a>                        &lt;a href=<span class="st">&quot;&lt;?php the_permalink(); ?&gt;&quot;</span> <span class="kw">class</span>=<span class="st">&quot;read-more&quot;</span>&gt;</span>
<span id="cb16-38"><a href="#cb16-38" aria-hidden="true"></a>                            View Project</span>
<span id="cb16-39"><a href="#cb16-39" aria-hidden="true"></a>                        &lt;/a&gt;</span>
<span id="cb16-40"><a href="#cb16-40" aria-hidden="true"></a>                    &lt;/div&gt;</span>
<span id="cb16-41"><a href="#cb16-41" aria-hidden="true"></a>                &lt;/article&gt;</span>
<span id="cb16-42"><a href="#cb16-42" aria-hidden="true"></a></span>
<span id="cb16-43"><a href="#cb16-43" 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="cb16-44"><a href="#cb16-44" aria-hidden="true"></a>        &lt;/div&gt;</span>
<span id="cb16-45"><a href="#cb16-45" aria-hidden="true"></a></span>
<span id="cb16-46"><a href="#cb16-46" aria-hidden="true"></a>        &lt;<span class="ot">?</span>php the_posts_pagination<span class="ot">();</span> <span class="kw">?&gt;</span></span>
<span id="cb16-47"><a href="#cb16-47" aria-hidden="true"></a></span>
<span id="cb16-48"><a href="#cb16-48" aria-hidden="true"></a>    &lt;<span class="ot">?</span>php <span class="kw">else</span> <span class="ot">:</span> <span class="kw">?&gt;</span></span>
<span id="cb16-49"><a href="#cb16-49" aria-hidden="true"></a>        &lt;p&gt;No portfolio items found.&lt;/p&gt;</span>
<span id="cb16-50"><a href="#cb16-50" 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="cb16-51"><a href="#cb16-51" aria-hidden="true"></a>&lt;/div&gt;</span>
<span id="cb16-52"><a href="#cb16-52" aria-hidden="true"></a></span>
<span id="cb16-53"><a href="#cb16-53" aria-hidden="true"></a>&lt;<span class="ot">?</span>php get_footer<span class="ot">();</span> <span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="querying-posts-with-acf-meta">Querying Posts with ACF Meta</h2>
<p><strong>Query by ACF Field Value</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><span class="kw">&lt;?php</span></span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true"></a><span class="co">// Query portfolio items by client name</span></span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true"></a><span class="kw">$args</span> = <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true"></a>    <span class="st">&#39;post_type&#39;</span>  =&gt; <span class="st">&#39;portfolio&#39;</span><span class="ot">,</span></span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true"></a>    <span class="st">&#39;meta_key&#39;</span>   =&gt; <span class="st">&#39;client_name&#39;</span><span class="ot">,</span></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true"></a>    <span class="st">&#39;meta_value&#39;</span> =&gt; <span class="st">&#39;Acme Corporation&#39;</span><span class="ot">,</span></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true"></a><span class="ot">);</span></span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true"></a></span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true"></a><span class="kw">$portfolio_query</span> = <span class="kw">new</span> WP_Query<span class="ot">(</span><span class="kw">$args</span><span class="ot">);</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="kw">if</span> <span class="ot">(</span><span class="kw">$portfolio_query</span>-&gt;have_posts<span class="ot">())</span> :</span>
<span id="cb17-12"><a href="#cb17-12" aria-hidden="true"></a>    <span class="kw">while</span> <span class="ot">(</span><span class="kw">$portfolio_query</span>-&gt;have_posts<span class="ot">())</span> :</span>
<span id="cb17-13"><a href="#cb17-13" aria-hidden="true"></a>        <span class="kw">$portfolio_query</span>-&gt;the_post<span class="ot">();</span></span>
<span id="cb17-14"><a href="#cb17-14" aria-hidden="true"></a>        the_title<span class="ot">(</span><span class="st">&#39;&lt;h2&gt;&#39;</span><span class="ot">,</span> <span class="st">&#39;&lt;/h2&gt;&#39;</span><span class="ot">);</span></span>
<span id="cb17-15"><a href="#cb17-15" aria-hidden="true"></a>    <span class="kw">endwhile</span><span class="ot">;</span></span>
<span id="cb17-16"><a href="#cb17-16" aria-hidden="true"></a>    wp_reset_postdata<span class="ot">();</span></span>
<span id="cb17-17"><a href="#cb17-17" aria-hidden="true"></a><span class="kw">endif</span><span class="ot">;</span></span>
<span id="cb17-18"><a href="#cb17-18" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Query with Meta Comparison</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="co">// Get portfolio items from 2024 or later</span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true"></a><span class="kw">$args</span> = <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true"></a>    <span class="st">&#39;post_type&#39;</span>  =&gt; <span class="st">&#39;portfolio&#39;</span><span class="ot">,</span></span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true"></a>    <span class="st">&#39;meta_query&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span>     =&gt; <span class="st">&#39;project_date&#39;</span><span class="ot">,</span></span>
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true"></a>            <span class="st">&#39;value&#39;</span>   =&gt; <span class="st">&#39;2024-01-01&#39;</span><span class="ot">,</span></span>
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true"></a>            <span class="st">&#39;compare&#39;</span> =&gt; <span class="st">&#39;&gt;=&#39;</span><span class="ot">,</span></span>
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span>    =&gt; <span class="st">&#39;DATE&#39;</span><span class="ot">,</span></span>
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb18-12"><a href="#cb18-12" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb18-13"><a href="#cb18-13" aria-hidden="true"></a><span class="ot">);</span></span>
<span id="cb18-14"><a href="#cb18-14" aria-hidden="true"></a></span>
<span id="cb18-15"><a href="#cb18-15" aria-hidden="true"></a><span class="kw">$recent_portfolio</span> = <span class="kw">new</span> WP_Query<span class="ot">(</span><span class="kw">$args</span><span class="ot">);</span></span>
<span id="cb18-16"><a href="#cb18-16" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Multiple Meta Queries</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">$args</span> = <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true"></a>    <span class="st">&#39;post_type&#39;</span>  =&gt; <span class="st">&#39;portfolio&#39;</span><span class="ot">,</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true"></a>    <span class="st">&#39;meta_query&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true"></a>        <span class="st">&#39;relation&#39;</span> =&gt; <span class="st">&#39;AND&#39;</span><span class="ot">,</span></span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span>     =&gt; <span class="st">&#39;client_name&#39;</span><span class="ot">,</span></span>
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true"></a>            <span class="st">&#39;value&#39;</span>   =&gt; <span class="st">&#39;Acme&#39;</span><span class="ot">,</span></span>
<span id="cb19-9"><a href="#cb19-9" aria-hidden="true"></a>            <span class="st">&#39;compare&#39;</span> =&gt; <span class="st">&#39;LIKE&#39;</span><span class="ot">,</span></span>
<span id="cb19-10"><a href="#cb19-10" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb19-11"><a href="#cb19-11" aria-hidden="true"></a>        <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb19-12"><a href="#cb19-12" aria-hidden="true"></a>            <span class="st">&#39;key&#39;</span>     =&gt; <span class="st">&#39;project_date&#39;</span><span class="ot">,</span></span>
<span id="cb19-13"><a href="#cb19-13" aria-hidden="true"></a>            <span class="st">&#39;value&#39;</span>   =&gt; <span class="st">&#39;2024-01-01&#39;</span><span class="ot">,</span></span>
<span id="cb19-14"><a href="#cb19-14" aria-hidden="true"></a>            <span class="st">&#39;compare&#39;</span> =&gt; <span class="st">&#39;&gt;=&#39;</span><span class="ot">,</span></span>
<span id="cb19-15"><a href="#cb19-15" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span>    =&gt; <span class="st">&#39;DATE&#39;</span><span class="ot">,</span></span>
<span id="cb19-16"><a href="#cb19-16" aria-hidden="true"></a>        <span class="ot">),</span></span>
<span id="cb19-17"><a href="#cb19-17" aria-hidden="true"></a>    <span class="ot">),</span></span>
<span id="cb19-18"><a href="#cb19-18" aria-hidden="true"></a><span class="ot">);</span></span>
<span id="cb19-19"><a href="#cb19-19" aria-hidden="true"></a></span>
<span id="cb19-20"><a href="#cb19-20" aria-hidden="true"></a><span class="kw">$filtered_portfolio</span> = <span class="kw">new</span> WP_Query<span class="ot">(</span><span class="kw">$args</span><span class="ot">);</span></span>
<span id="cb19-21"><a href="#cb19-21" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="programmatic-field-registration">Programmatic Field Registration</h2>
<p><strong>Register Fields via PHP</strong> (functions.php):</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_acf_fields<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_portfolio&#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;Portfolio Fields&#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_client_name&#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;Client Name&#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;client_name&#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;text&#39;</span><span class="ot">,</span></span>
<span id="cb20-12"><a href="#cb20-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="cb20-13"><a href="#cb20-13" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb20-14"><a href="#cb20-14" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-15"><a href="#cb20-15" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_project_url&#39;</span><span class="ot">,</span></span>
<span id="cb20-16"><a href="#cb20-16" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Project URL&#39;</span><span class="ot">,</span></span>
<span id="cb20-17"><a href="#cb20-17" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;project_url&#39;</span><span class="ot">,</span></span>
<span id="cb20-18"><a href="#cb20-18" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;url&#39;</span><span class="ot">,</span></span>
<span id="cb20-19"><a href="#cb20-19" aria-hidden="true"></a>                <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="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_project_date&#39;</span><span class="ot">,</span></span>
<span id="cb20-22"><a href="#cb20-22" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Project Date&#39;</span><span class="ot">,</span></span>
<span id="cb20-23"><a href="#cb20-23" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;project_date&#39;</span><span class="ot">,</span></span>
<span id="cb20-24"><a href="#cb20-24" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;date_picker&#39;</span><span class="ot">,</span></span>
<span id="cb20-25"><a href="#cb20-25" aria-hidden="true"></a>                    <span class="st">&#39;display_format&#39;</span> =&gt; <span class="st">&#39;d/m/Y&#39;</span><span class="ot">,</span></span>
<span id="cb20-26"><a href="#cb20-26" aria-hidden="true"></a>                    <span class="st">&#39;return_format&#39;</span>  =&gt; <span class="st">&#39;Y-m-d&#39;</span><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="kw">array</span><span class="ot">(</span></span>
<span id="cb20-29"><a href="#cb20-29" aria-hidden="true"></a>                    <span class="st">&#39;key&#39;</span>   =&gt; <span class="st">&#39;field_technologies&#39;</span><span class="ot">,</span></span>
<span id="cb20-30"><a href="#cb20-30" aria-hidden="true"></a>                    <span class="st">&#39;label&#39;</span> =&gt; <span class="st">&#39;Technologies Used&#39;</span><span class="ot">,</span></span>
<span id="cb20-31"><a href="#cb20-31" aria-hidden="true"></a>                    <span class="st">&#39;name&#39;</span>  =&gt; <span class="st">&#39;technologies&#39;</span><span class="ot">,</span></span>
<span id="cb20-32"><a href="#cb20-32" aria-hidden="true"></a>                    <span class="st">&#39;type&#39;</span>  =&gt; <span class="st">&#39;checkbox&#39;</span><span class="ot">,</span></span>
<span id="cb20-33"><a href="#cb20-33" aria-hidden="true"></a>                    <span class="st">&#39;choices&#39;</span> =&gt; <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-34"><a href="#cb20-34" aria-hidden="true"></a>                        <span class="st">&#39;wordpress&#39;</span>  =&gt; <span class="st">&#39;WordPress&#39;</span><span class="ot">,</span></span>
<span id="cb20-35"><a href="#cb20-35" aria-hidden="true"></a>                        <span class="st">&#39;php&#39;</span>        =&gt; <span class="st">&#39;PHP&#39;</span><span class="ot">,</span></span>
<span id="cb20-36"><a href="#cb20-36" aria-hidden="true"></a>                        <span class="st">&#39;javascript&#39;</span> =&gt; <span class="st">&#39;JavaScript&#39;</span><span class="ot">,</span></span>
<span id="cb20-37"><a href="#cb20-37" aria-hidden="true"></a>                        <span class="st">&#39;react&#39;</span>      =&gt; <span class="st">&#39;React&#39;</span><span class="ot">,</span></span>
<span id="cb20-38"><a href="#cb20-38" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb20-39"><a href="#cb20-39" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb20-40"><a href="#cb20-40" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb20-41"><a href="#cb20-41" 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-42"><a href="#cb20-42" aria-hidden="true"></a>                <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-43"><a href="#cb20-43" aria-hidden="true"></a>                    <span class="kw">array</span><span class="ot">(</span></span>
<span id="cb20-44"><a href="#cb20-44" 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-45"><a href="#cb20-45" 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-46"><a href="#cb20-46" 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-47"><a href="#cb20-47" aria-hidden="true"></a>                    <span class="ot">),</span></span>
<span id="cb20-48"><a href="#cb20-48" aria-hidden="true"></a>                <span class="ot">),</span></span>
<span id="cb20-49"><a href="#cb20-49" aria-hidden="true"></a>            <span class="ot">),</span></span>
<span id="cb20-50"><a href="#cb20-50" aria-hidden="true"></a>        <span class="ot">));</span></span>
<span id="cb20-51"><a href="#cb20-51" aria-hidden="true"></a>    }</span>
<span id="cb20-52"><a href="#cb20-52" aria-hidden="true"></a>}</span>
<span id="cb20-53"><a href="#cb20-53" 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_fields&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="helper-functions">Helper Functions</h2>
<p><strong>Check if Field Has Value</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">if</span> <span class="ot">(</span>get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">))</span> {</span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;Client: &#39;</span> . esc_html<span class="ot">(</span>get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">));</span></span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true"></a>}</span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Field Shorthand</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="co">// Get and echo in one function</span></span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true"></a>the_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">);</span></span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true"></a></span>
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true"></a><span class="co">// Equivalent to:</span></span>
<span id="cb22-6"><a href="#cb22-6" aria-hidden="true"></a><span class="kw">echo</span> get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">);</span></span>
<span id="cb22-7"><a href="#cb22-7" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<p><strong>Get Field from Specific Post</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>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true"></a><span class="kw">$client</span> = get_field<span class="ot">(</span><span class="st">&#39;client_name&#39;</span><span class="ot">,</span> <span class="dv">123</span><span class="ot">);</span> <span class="co">// Post ID 123</span></span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true"></a><span class="kw">?&gt;</span></span></code></pre>
</div>
<h2 id="conclusion">Conclusion</h2>
<p>Advanced Custom Fields transforms WordPress custom post types into robust content management systems through intuitive field group interfaces eliminating custom database development. Register custom post types with register_post_type(), create field groups via ACF admin interface, display fields in templates using get_field() and the_field(), query posts by meta values with WP_Query meta_query parameters, and optionally register fields programmatically with acf_add_local_field_group(). ACF enables complex data structures maintaining WordPress simplicity and flexibility.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://www.advancedcustomfields.com/resources/">ACF Documentation</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/#field-types">ACF Field Types</a></li>
<li><a href="https://www.advancedcustomfields.com/resources/get_field/">get_field() Reference</a></li>
<li><a href="https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters">WP_Query Meta Parameters</a></li>
<li><a href="https://developer.wordpress.org/reference/functions/register_post_type/">Register Post Type</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Custom fields need reliable backups. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> protects your WordPress ACF configurations and custom post type data automatically. Safeguard your content structures—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/acf-tutorial-building-custom-post-types-with-advanced-custom-fields/">ACF Tutorial: Building Custom Post Types with Advanced Custom Fields</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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>
