<?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>Elegant Themes Blog</title>
	<atom:link href="https://www.elegantthemes.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>https://www.elegantthemes.com/blog</link>
	<description>Best WordPress &#38; Divi Resources</description>
	<lastBuildDate>Fri, 13 Nov 2026 00:19:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Everything You Need To Know About Nested Variables In Divi 5</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-nested-variables-in-divi-5</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-nested-variables-in-divi-5#respond</comments>
		
		<dc:creator><![CDATA[Donjete Vuniqi]]></dc:creator>
		<pubDate>Sat, 14 Nov 2026 16:00:17 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<category><![CDATA[Nested Variables]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=324132</guid>

					<description><![CDATA[<p>A spacing system becomes easier to maintain when its values have a clear relationship. A panel might need twice your standard padding, while the gaps between its contents need half that amount. Nested variables let you keep those relationships connected in Divi 5. You can also build a fluid heading size from shared limits or [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-nested-variables-in-divi-5">Everything You Need To Know About Nested Variables In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A spacing system becomes easier to maintain when its values have a clear relationship. A panel might need twice your standard padding, while the gaps between its contents need half that amount. Nested variables let you keep those relationships connected in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>.</p>
<p>You can also build a fluid heading size from shared limits or assemble reusable text from smaller pieces. We’ll use a workshop layout to explore each approach and show what happens when a source value changes.</p>
<h2>What Are Nested Variables In Divi 5?</h2>
<p>A nested variable contains a reference to another variable within its value. The source holds the original information; the variable that references it adds a relationship or combines it with other content.</p>
<p>For example, a number variable named <strong>Base Space</strong> can hold 24px. A second variable, <strong>Panel Padding</strong>, can reference Base Space and multiply it by 2. Panel Padding then produces 48px wherever you apply it. Change Base Space to 32px, and that padding becomes 64px.</p>
<p>The distinction is where you store the relationship:</p>
<ul>
<li><strong>Use a source variable directly</strong> when several settings should share the same value.</li>
<li><strong>Use variable math in a setting</strong> when a calculation belongs to that particular field.</li>
<li><strong>Create a nested variable</strong> when you want to name and reuse the calculated or combined value.</li>
</ul>
<p>Our <a href="https://www.elegantthemes.com/blog/theme-releases/variable-math">nested variables, variable math, and variable combinations update</a> brings these workflows together. The examples below focus on number and text variables, using a single layout so their effects are easy to follow.</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-324261 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview.jpg" alt="A source spacing variable connects nested calculations to column padding and gaps" width="1800" height="1500" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview-300x250.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview-768x640.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview-1536x1280.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/01-overview-610x508.jpg 610w" sizes="(max-width: 1800px) 100vw, 1800px" /></p>
<h2>Download The Example Layouts</h2>
<p>Choose between two page layouts in the download. With the <strong>starter</strong>, you can replace fixed values with variable relationships yourself. The <strong>finished layout</strong> includes the nested variables and their connections to the design.</p>
<div class="et_bloom_locked_container et_bloom_optin_1" data-page_id="324132" data-optin_id="optin_1" data-list_id="mailchimp_c886a2fc0a" data-current_optin_id="optin_1">
					<div class="et_bloom_locked_content" style="display: none;">
						<a href="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/divi-5-nested-variables-tutorial-layouts.zip" class="button inline-button primary-button" rel=" ">Download the Files</a>
					</div>
					<div class="et_bloom_locked_form">
						<div class="et_bloom_inline_form et_bloom_optin et_bloom_make_form_visible et_bloom_optin_1" style="display: none;">
				<style type="text/css">.et_bloom .et_bloom_optin_1 .et_bloom_form_content { background-color: #4843d2 !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container .et_bloom_form_header { background-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge .et_bloom_form_content:before { border-top-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before, .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:before { border-top-color: transparent !important; border-left-color: #ffffff !important; }
						@media only screen and ( max-width: 767px ) {.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before { border-top-color: #ffffff !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:after { border-bottom-color: #ffffff !important; border-left-color: transparent !important; }
						}.et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_fields i { color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_custom_field_radio i:before { background: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_border_solid { border-color: #f7f9fb !important } .et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 strong { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; }.et_bloom .et_bloom_optin_1 .et_bloom_form_container p, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p strong, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form input, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form button span { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; } p.et_bloom_popup_input { padding-bottom: 0 !important;}</style>
				<div class="et_bloom_form_container  with_edge carrot_edge et_bloom_border_solid et_bloom_rounded et_bloom_form_text_light et_bloom_form_bottom et_bloom_inline_1_field">
					
			<div class="et_bloom_form_container_wrapper clearfix">
				<div class="et_bloom_header_outer">
					<div class="et_bloom_form_header split et_bloom_header_text_dark">
						<img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/plugins/bloom/images/premade-image-06.png" alt="Download For Free" class=" et_bloom_image_slideup et_bloom_image">
						<div class="et_bloom_form_text">
						<h2>Download For Free</h2><p>Join the Divi Newsletter and we will email you a copy of the ultimate Divi Landing Page Layout Pack, plus tons of other amazing and free Divi resources, tips and tricks. Follow along and you will be a Divi master in no time. <em>If you are already subscribed simply type in your email address below and click download to access the layout pack.</em></p>
					</div>
						
					</div>
				</div>
				<div class="et_bloom_form_content et_bloom_1_field et_bloom_bottom_inline">
					
					
					<form method="post" class="clearfix">
						<div class="et_bloom_fields">
							
							<p class="et_bloom_popup_input et_bloom_subscribe_email">
								<input placeholder="Enter your email address">
							</p>
							
							<button data-optin_id="optin_1" data-service="mailchimp" data-list_id="c886a2fc0a" data-page_id="324132" data-account="Divi Daily" data-ip_address="true" class="et_bloom_submit_subscription et_bloom_submit_subscription_locked">
								<span class="et_bloom_subscribe_loader"></span>
								<span class="et_bloom_button_text et_bloom_button_text_color_light">DOWNLOAD</span>
							</button>
						</div>
					</form>
					<div class="et_bloom_success_container">
						<span class="et_bloom_success_checkmark"></span>
					</div>
					<h2 class="et_bloom_success_message">You have successfully subscribed. Please check your email address to confirm your subscription and get access to free weekly Divi layout packs!</h2>
					
				</div>
			</div>
			<span class="et_bloom_close_button"></span>
				</div>
			</div>
					</div>
				</div>
<p>To follow along with the starter layout:</p>
<ol>
<li>Create a new page in WordPress and choose the <strong>Blank Page</strong> template to keep the example free of a header and footer.</li>
<li>Save the draft, then open it with the <strong>Divi Builder</strong>.</li>
<li>Open the <strong>Page Menu</strong> at the top left of the builder and choose <strong>Import</strong>.</li>
<li>Select the starter JSON from the extracted download. Leave <strong>Replace Existing Content</strong> selected on this new, empty page, then click <strong>Import Layout</strong>.</li>
<li>Save the page and keep the Visual Builder open for the following examples.</li>
</ol>
<p>These are page-level imports, so use the builder’s page menu rather than the Divi Library importer. The finished file also includes nine global variables; the starter does not require them.</p>
<h2>Build Connected Spacing With Number Variables</h2>
<p>Start with one source value and two related sizes. In the example, Base Space controls the introduction’s padding, Panel Padding gives the blue column more room, and Small Gap spaces the modules within each column.</p>
<h3>Create The Source Variable</h3>
<p>Open the <strong>Variable Manager</strong> from the builder’s left sidebar. If you’re new to the system, our <a href="https://www.elegantthemes.com/blog/theme-releases/design-variables">Design Variables introduction</a> explains how reusable values work across elements and presets.</p>
<ol>
<li>Expand <strong>Numbers</strong> in the Variable Manager.</li>
<li>Click <strong>Add Global Number</strong>.</li>
<li>Give the variable the name <strong>Base Space</strong>.</li>
<li>Set its value to <strong>24</strong> and its unit to <strong>px</strong>.</li>
</ol>
<p>Use a distinct name if your site already has a variable for another spacing system. These variables belong to the website, so their names should make sense beyond the current page.</p>
<h3>Create The Derived Spacing Variables</h3>
<p>Add another global number and name it <strong>Panel Padding</strong>. Its value will contain a reference to Base Space followed by a multiplication.</p>
<ol>
<li>Clear the new variable’s initial value.</li>
<li>Click its <strong>Dynamic Content</strong> insertion button and select <strong>Base Space</strong> from the number variables.</li>
<li>Place the cursor after the inserted chip and type <strong>* 2</strong>.</li>
<li>Add a third number variable named <strong>Small Gap</strong>.</li>
<li>Insert <strong>Base Space</strong> in its value, then type <strong>/ 2</strong> after the chip.</li>
</ol>
<p>Keep Base Space as a variable chip in both expressions. Typing its current value would produce a fixed calculation without a connection to the source.</p>
<p>Click <strong>Save Variables</strong>, then confirm <strong>Apply Changes</strong> when prompted. With Base Space at 24px, Panel Padding produces 48px and Small Gap produces 12px.</p>
<p><img decoding="async" class="alignnone size-full wp-image-324262 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing.jpg" alt="Creating linked spacing calculations with Base Space variable chips" width="1800" height="1500" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing-300x250.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing-768x640.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing-1536x1280.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/02-spacing-610x508.jpg 610w" sizes="(max-width: 1800px) 100vw, 1800px" /></p>
<h3>Apply The Variables To The Layout</h3>
<p>Open <strong>Layers</strong> from the left sidebar and expand the section and its first row. Open the settings for the blue agenda column. Selecting the column in Layers helps avoid opening a Text Module inside it instead.</p>
<ol>
<li>Go to <strong>Design &gt; Spacing</strong> in the column settings.</li>
<li>In the first <strong>Padding</strong> field, use the dynamic content picker to select <strong>Panel Padding</strong>.</li>
<li>Apply that variable to the top, bottom, left, and right padding fields. Use the linking controls for matching pairs where convenient.</li>
</ol>
<p>Each side now references the same derived variable. The settings show its name, while the column uses the resulting 48px value.</p>
<p><img decoding="async" class="alignnone size-full wp-image-324263 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding.jpg" alt="Applying Panel Padding and Small Gap to native column settings" width="1800" height="1470" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding-300x245.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding-768x627.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding-1536x1254.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/03-apply-padding-610x498.jpg 610w" sizes="(max-width: 1800px) 100vw, 1800px" /></p>
<p>For the spacing between modules, open <strong>Design &gt; Layout</strong> in that column and select <strong>Small Gap</strong> for <strong>Vertical Gap</strong>. The supplied columns use the <strong>Flex</strong> layout style. Apply Base Space directly to the introduction column’s padding if you’re reproducing all the example’s relationships.</p>
<h3>Change The Source And Check The Result</h3>
<p>Return to the Variable Manager and change <strong>Base Space</strong> from 24px to 32px. The introduction padding becomes 32px, the blue column’s padding becomes 64px, and the module gaps become 16px.</p>
<p>The derived expressions stay intact throughout that change. You can adjust the overall spacing without replacing the values in each connected setting. Restore Base Space to 24px if you want to continue with the supplied layout’s original proportions.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-324267 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update.jpg" alt="Changing Base Space from 24px to 32px updates panel padding from 48px to 64px and gaps from 12px to 16px" width="1800" height="1540" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update-300x257.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update-768x657.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update-1536x1314.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/07-source-update-610x522.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h2>Create Fluid Typography With Shared Limits</h2>
<p>Nesting also works inside the CSS functions available through <a href="https://www.elegantthemes.com/blog/theme-releases/advanced-units-for-divi">Divi’s Advanced Units</a>. A useful example is a fluid heading with a shared minimum and maximum size.</p>
<p>We’ll use three number variables:</p>
<ul>
<li><strong>Heading Minimum:</strong> 36px.</li>
<li><strong>Heading Maximum:</strong> 76px.</li>
<li><strong>Fluid Heading:</strong> a clamp() expression referencing both limits.</li>
</ul>
<p>Create Heading Minimum and Heading Maximum in the <strong>Numbers</strong> group, as you did with Base Space. Then add the third number variable and name it Fluid Heading.</p>
<ol>
<li>Open Fluid Heading’s unit selector and choose <strong>clamp</strong>.</li>
<li>In the function’s value field, insert the <strong>Heading Minimum</strong> variable as the first argument.</li>
<li>After that chip, enter a comma, <strong>5.2vw</strong>, and another comma.</li>
<li>Insert <strong>Heading Maximum</strong> as the final argument.</li>
<li>Save the variables and apply the changes.</li>
</ol>
<p>The clamp selector supplies the function around those three arguments. In the value field, you’ll see the two variable chips with 5.2vw between them.</p>
<p>The first and final arguments establish the size limits. Between them, 5.2vw provides a preferred size that changes with viewport width: 5.2% of that width. The browser keeps the result within the two limits.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-324264 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading.jpg" alt="How shared minimum and maximum variables control a fluid heading at different viewport widths" width="1800" height="1760" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading-300x293.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading-768x751.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading-1536x1502.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/04-fluid-heading-610x596.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>To use the result, open the main Heading Module and go to <strong>Design &gt; Heading Text</strong>. In <strong>Heading Text Size</strong>, insert <strong>Fluid Heading</strong> through the dynamic content picker.</p>
<p>Check the title in desktop, tablet, and phone previews. At a wide viewport, the maximum may limit the size; on a narrow screen, the minimum may take over. Between those limits, the viewport value controls the heading’s size.</p>
<p>To verify the connection, temporarily lower Heading Maximum to 44px while viewing the desktop layout. The heading cannot grow beyond that limit. Restore 76px afterward. A change to the maximum will only alter the visible result when that limit affects the current viewport size.</p>
<h2>Assemble Reusable Text With Nested Variables</h2>
<p>Text variables can combine shared details into a larger reusable value. Our workshop uses a date and location together in both the introduction and the agenda panel.</p>
<h3>Create The Individual Details</h3>
<p>In the Variable Manager, expand <strong>Text</strong> and click <strong>Add Global Text</strong>. Create a variable named <strong>Event Date</strong> and enter the workshop date. Add another named <strong>Event Location</strong> and enter the city.</p>
<p>The example uses 18 June 2027 and Antwerp. Both are ordinary text values: the date stays as entered until you change its source.</p>
<h3>Build The Combined Text Variable</h3>
<p>Add another text variable and name it <strong>Event Details</strong>. Build its value from the two existing sources:</p>
<ol>
<li>Place the cursor in the empty value field.</li>
<li>Open the dynamic content picker and select <strong>Event Date</strong>.</li>
<li>After the chip, type a space, a middle dot separator, and another space.</li>
<li>Open the picker again and insert <strong>Event Location</strong>.</li>
<li>Save the variables and apply the changes.</li>
</ol>
<p>The date and location remain separate chips, with an ordinary text separator between them. Event Details combines those pieces into one value you can reuse elsewhere.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-324265 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text.jpg" alt="Combining event text variables and reusing the result in two Text Modules" width="1800" height="2000" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text-270x300.jpg 270w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text-768x853.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text-1382x1536.jpg 1382w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/05-nested-text-610x678.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Reuse The Combined Value</h3>
<p>Open the Text Module used for event details below the introduction. Under <strong>Content &gt; Text</strong>, replace its fixed date-and-location line with the <strong>Event Details</strong> variable using the dynamic content control. Repeat this for the corresponding Text Module in the blue agenda column.</p>
<p>Now change Event Location in the Variable Manager. Changing it from Antwerp to Ghent updates both Event Details instances because they reference the same composed value. Restore the original location when you’ve finished checking the result.</p>
<p>You can also combine variables with words directly in a module’s text field. The distinction is reuse: create Event Details when that same combination belongs in several places. Keep surrounding words in the module when they belong to that particular piece of content.</p>
<h2>Insert And Manage Individual Variable Chips</h2>
<p>Each chip represents one source within the field. You can continue typing around it, add another source, or change that occurrence without replacing the whole value.</p>
<p>For keyboard insertion, place the cursor where a source belongs and type <strong>{{</strong> in a supported field. Divi opens the variable picker at that position. Search for the source, select it, and continue editing around the inserted chip.</p>
<p>Click an existing chip to open its options. The menu lets you choose another source, <strong>Detach From Variable</strong>, or <strong>Remove Variable</strong>.</p>
<ul>
<li><strong>Choose another source</strong> to replace that chip’s reference while keeping the surrounding content.</li>
<li><strong>Detach From Variable</strong> to keep the current value at that occurrence and break its live connection.</li>
<li><strong>Remove Variable</strong> to remove that occurrence from the field.</li>
</ul>
<p>For Event Details, these controls belong to the individual date or location chip. Editing a chip inside that global text variable affects the composed value wherever it’s used. Editing a chip inside one module changes that module’s content instead.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-324266 with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions.jpg" alt="The different results of detaching and removing a nested variable chip" width="1800" height="1370" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions-300x228.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions-768x585.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions-1536x1169.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/06-chip-actions-610x464.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h2>Keep Your Variable Relationships Easy To Maintain</h2>
<p>A useful nesting system should remain understandable when you return to it later. A few habits help keep the connections clear:</p>
<ul>
<li><strong>Name variables by purpose.</strong> Base Space and Panel Padding describe their roles more clearly than numbered names.</li>
<li><strong>Keep arithmetic meaningful.</strong> Multiply or divide a spacing value by a plain number. When adding or subtracting lengths, use compatible CSS values and include the required units.</li>
<li><strong>Keep clamp limits sensible.</strong> The minimum should fit small screens, and the maximum should suit the design. Check the actual heading at several widths.</li>
<li><strong>Avoid circular references.</strong> A source should not depend on a variable that eventually points back to it.</li>
<li><strong>Check the connections before saving.</strong> Global variable changes can affect other pages. Inspect the dependent values, save the variables and page, then reload to confirm the result.</li>
</ul>
<p>If a setting stops following a source, check whether it still contains a variable chip. A detached value, a fixed replacement, or a separate responsive override may explain why that setting behaves differently.</p>
<h2>Build More Connected Designs With Divi 5</h2>
<p>Nested variables let a few shared decisions guide the details of a design. Start with one spacing relationship or a reusable text combination, then expand the system where those connections save work. Explore <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> and use variables to keep your next design easier to adjust.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-nested-variables-in-divi-5">Everything You Need To Know About Nested Variables In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-nested-variables-in-divi-5/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/nested-variables-divi-5-ft-img-3.jpeg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>How To Create A Course Directory With Category, Level, And Duration Filters</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-course-directory-with-category-level-and-duration-filters</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-course-directory-with-category-level-and-duration-filters#respond</comments>
		
		<dc:creator><![CDATA[Deanna McLean]]></dc:creator>
		<pubDate>Fri, 13 Nov 2026 16:00:00 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=322582</guid>

					<description><![CDATA[<p>Someone looking for their first WordPress course has different needs from an experienced designer with an afternoon to spare. A course directory helps both visitors find something that fits when its filters reflect the questions they bring to the page. In this tutorial, we’ll build a small web-design course directory with Divi 5 and Advanced [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-course-directory-with-category-level-and-duration-filters">How To Create A Course Directory With Category, Level, And Duration Filters</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Someone looking for their first WordPress course has different needs from an experienced designer with an afternoon to spare. A course directory helps both visitors find something that fits when its filters reflect the questions they bring to the page.</p>
<p>In this tutorial, we’ll build a small web-design course directory with <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> and <a href="https://www.advancedcustomfields.com/" rel="noopener" target="_blank">Advanced Custom Fields</a> (ACF). Visitors can choose a category, skill level, and duration, then open a matching course through its image or title. We’ll use native Divi settings throughout the build.</p>
<h2>What We’re Building</h2>
<p>Our example includes six fictional courses covering UI design, development, and WordPress. Each card shows an illustration, title, short description, level, and exact duration. Three labeled dropdowns sit above the cards, alongside a button that returns the directory to its unfiltered view.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Web-design-course-directory-with-category-level-and-duration-filters-1.jpg" alt="Web design course directory with category level and duration filters" width="1800" height="1956" /></p>
<p>ACF stores each course’s details, while Divi’s <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-divi-5s-loop-builder">Loop Builder</a> repeats one card design for the course records. We’ll connect the dropdowns to that loop with the <a href="https://help.elegantthemes.com/en/articles/16186978-the-post-filter-module-in-divi-5">Post Filter module</a>, giving us one card design to maintain as the directory grows.</p>
<p>The layout has three card columns on desktop, two on tablets, and one on phones. We’re building the directory page and linking its cards to individual course records. Designing a custom course-page template, delivering lessons, handling enrollment, taking payments, and tracking progress sit outside this example.</p>
<h2>What You’ll Need</h2>
<p>Activate ACF on a WordPress site running Divi 5, and check that the Post Filter module is available in the module picker. The example uses WordPress 7.1.3 with Divi 5.15.1 and ACF 6.8.10. Gather six course images and brief descriptions before adding the sample content.</p>
<p>Use a test site while you work through the tutorial. The downloadable files include the layout, ACF structure, sample data reference, and illustrations. Alternatively, use the download section to load the layout instead of building it from scratch.</p>
<h2>1. Create The Courses Post Type</h2>
<p>In the WordPress dashboard, go to <strong>ACF &gt; Post Types &gt; Add New</strong>. Set <strong>Plural Label</strong> to Courses, <strong>Singular Label</strong> to Course, and <strong>Post Type Key</strong> to course. Keep <strong>Public</strong> enabled and <strong>Hierarchical</strong> disabled.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Courses-post-type-labels-key-and-public-settings.jpg" alt="Courses post type labels key and public settings" width="1800" height="1458" /></p>
<p>Next, open <strong>Advanced Configuration &gt; General</strong>. Under <strong>Supports</strong>, enable the title, editor, excerpt, featured image, custom fields, and revisions.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Enabled-Courses-content-supports.jpg" alt="Enabled Courses content supports" width="1800" height="1584" /></p>
<p>Open <strong>Advanced Configuration &gt; URLs</strong>. Choose <strong>Custom Permalink</strong> to reveal <strong>URL Slug</strong>, then enter courses as the slug. Leave the archive disabled for this standalone directory.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Courses-permalink-slug-and-disabled-archive.jpg" alt="Courses permalink slug and disabled archive" width="1800" height="1126" /></p>
<p>Finally, open <strong>Advanced Configuration &gt; REST API</strong> and keep <strong>Show In REST API</strong> enabled, then save the post type.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Enabled-Courses-REST-API-setting.jpg" alt="Enabled Courses REST API setting" width="1800" height="1126" /></p>
<p>You now have a Courses area in the dashboard. Its title, excerpt, and featured image supply the standard card content; the fields we add next hold the information used for filtering.</p>
<h2>2. Add The Course Details Fields</h2>
<p>Go to <strong>ACF &gt; Field Groups &gt; Add New</strong> and name the group Course details. Under the group’s location rules, choose <strong>Post Type</strong>, <strong>Is Equal To</strong>, and <strong>Course</strong>. This places the fields on course editing screens.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-details-field-group-and-Course-location-rule.jpg" alt="Course details field group and Course location rule" width="1800" height="1337" /></p>
<p>Add a <strong>Category</strong> field, choose <strong>Select</strong>, and use course_category as the field name. Enter UI design, Development, and WordPress as choices, one per line.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Category-field-name-type-and-choices.jpg" alt="Category field name type and choices" width="1800" height="1360" /></p>
<p>For this Select field, switch to <strong>Validation</strong> and enable <strong>Required</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Category-field-Validation-settings.jpg" alt="Category field Validation settings" width="1800" height="968" /></p>
<p>Return to <strong>General</strong>, set <strong>Return Format</strong> to <strong>Value</strong>, and leave <strong>Select Multiple</strong> disabled. Apply these General and Validation settings to Level and Duration band as well.</p>
<p>Next, add a <strong>Level</strong> Select field named course_level. Its choices are Beginner, Intermediate, and Advanced.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Level-field-name-and-choices.jpg" alt="Level field name and choices" width="1800" height="968" /></p>
<p>Add a <strong>Duration band</strong> Select field named course_duration_band. Its choices are Under 3 hours, 3–6 hours, and Over 6 hours. Keep their spelling consistent with the sample content.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Duration-band-field-name-and-choices.jpg" alt="Duration band field name and choices" width="1800" height="968" /></p>
<p>Finally, add an <strong>Exact duration</strong> Text field named course_duration_label. The General tab identifies the field’s type and name.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Exact-duration-field-General-settings.jpg" alt="Exact duration field General settings" width="1800" height="968" /></p>
<p>Open <strong>Validation</strong> and enable <strong>Required</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Exact-duration-Required-setting.jpg" alt="Exact duration Required setting" width="1800" height="968" /></p>
<p>In <strong>Presentation &gt; Instructions</strong>, remind editors to update the duration band whenever this value changes. Then save the field group.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Exact-duration-editor-instructions-and-Save-Changes.jpg" alt="Exact duration editor instructions and Save Changes" width="1800" height="968" /></p>
<p>Duration uses two fields because the dropdown matches a saved band. It does not calculate a range from text such as 2 hr 30 min. Assign courses shorter than three hours to Under 3 hours, courses from three through six hours to 3–6 hours, and longer courses to Over 6 hours.</p>
<h2>3. Add The Sample Courses</h2>
<p>In <strong>Courses &gt; Add New</strong>, create the first course with a title, excerpt, and featured image. Fill in its four course fields, then publish it.</p>
<p>The <strong>Excerpt</strong> is a standard WordPress post setting, separate from the ACF Course details fields. Open the course editor’s post settings sidebar and use its Excerpt control to enter the short description used on the directory card.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Sample-course-editor-and-Course-details-fields.jpg" alt="Sample course editor and Course details fields" width="1800" height="1210" /></p>
<p>Repeat for the remaining courses, using these values to reproduce the example and its filter tests:</p>
<ul>
<li><strong>Web design fundamentals:</strong> UI design; Beginner; Under 3 hours; 2 hr 30 min.</li>
<li><strong>Responsive layouts:</strong> Development; Intermediate; 3–6 hours; 4 hr 15 min.</li>
<li><strong>Design systems in Figma:</strong> UI design; Intermediate; 3–6 hours; 5 hr.</li>
<li><strong>Build with WordPress:</strong> WordPress; Beginner; Over 6 hours; 6 hr 30 min.</li>
<li><strong>Accessible interfaces:</strong> UI design; Beginner; Under 3 hours; 2 hr.</li>
<li><strong>Advanced CSS layouts:</strong> Development; Advanced; Over 6 hours; 7 hr.</li>
</ul>
<p>The excerpt supplies each card’s short description. Keep it brief enough to scan alongside the title and metadata.</p>
<p>Add the information visitors should read on the individual course page to the main content editor. The excerpt and ACF fields populate the directory, but they do not automatically create a complete course-detail page. Without main content or a custom template, a course page may show only its title and featured image.</p>
<p>For the directory images, we’ll use each course’s title as dynamic alt text when configuring the Image module in section 5.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Published-sample-courses-in-the-Courses-list-1.jpg" alt="Published sample courses in the Courses list" width="1800" height="968" /></p>
<h2>4. Create The Directory Page</h2>
<p>Go to <strong>Pages &gt; Add New</strong> and name the page Web Design Course Directory. Choose the <strong>Blank Page</strong> template for the standalone demo, then open Divi Builder and start with a regular section and a one-column row.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Directory-page-with-the-Blank-Page-template.jpg" alt="Directory page with the Blank Page template" width="1800" height="1000" /></p>
<h3>Find The Section And Row Settings</h3>
<p>Click the stacked-layers icon in the left toolbar to open <strong>Layers</strong>, then double-click an element’s name to open its settings on the right. Choose <strong>Content</strong>, <strong>Design</strong>, or <strong>Advanced</strong>, then expand the named settings group.</p>
<p>Each settings image shows one native Builder view. Locate the selected element in Layers, then follow the open tab and settings group on the right. Red outlines identify the relevant controls.</p>
<p>You can name an element through <strong>Content &gt; Meta &gt; Element Label</strong>. In this demo, the Post Filter module is labeled <strong>Filter courses</strong> in Layers; its settings panel still identifies it as <strong>Post Filter</strong>.</p>
<p>Double-click the section in Layers, then open <strong>Content &gt; Background</strong> and use #ffffff.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/White-section-background-setting.jpg" alt="White section background setting" width="1800" height="1013" /></p>
<p>With the section selected, open <strong>Design &gt; Spacing</strong> and set top and bottom padding to 64px and left and right padding to 0px.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Section-padding-values.jpg" alt="Section padding values" width="1800" height="1013" /></p>
<p>Select the row inside the section in Layers. Open <strong>Design &gt; Sizing</strong>, set <strong>Width</strong> to 88% and <strong>Max Width</strong> to 1280px.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Directory-row-width-and-maximum-width-settings.jpg" alt="Directory row width and maximum width settings" width="1800" height="1013" /></p>
<p>Open the row’s <strong>Design &gt; Spacing</strong> settings and set its top and bottom padding to 0px.</p>
<h3>Build The Directory Introduction</h3>
<p>Inside the column, add a Text module for the small introductory label. Open <strong>Content &gt; Meta</strong> and set <strong>Element Label</strong> to Library eyebrow. In that Text module, open <strong>Design &gt; Text</strong> and set its font to Inter, weight 500, size 14px, and color #022eee.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Library-eyebrow-typography-settings.jpg" alt="Library eyebrow typography settings" width="1800" height="1013" /></p>
<p>Open <strong>Design &gt; Spacing</strong> and give Library eyebrow a 20px bottom margin.</p>
<p>Add a Group below it and label it <strong>Directory intro</strong>. With Directory intro selected, open <strong>Design &gt; Layout</strong> and use a Flex row with a 28px horizontal gap and bottom alignment.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Directory-intro-Flex-layout-settings.jpg" alt="Directory intro Flex layout settings" width="1800" height="1013" /></p>
<p>In <strong>Directory intro &gt; Design &gt; Spacing</strong>, use a 40px bottom margin.</p>
<p>Add a nested <strong>Hero text</strong> Group and a Text module beside it. Select Hero text in Layers and open <strong>Design &gt; Sizing</strong>. Set its width to 68%.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Desktop-Hero-text-width-setting.jpg" alt="Desktop Hero text width setting" width="1800" height="1013" /></p>
<p>Select the adjacent introduction Text module and set its <strong>Design &gt; Sizing &gt; Width</strong> to 30%.</p>
<p>In Hero text, add an H1 Heading module for the main title. In the Heading module, open <strong>Design &gt; Heading Text</strong>. Use Inter 500 at 64px, black text, 1.1em line height, and -0.03em letter spacing.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Directory-heading-typography-settings.jpg" alt="Directory heading typography settings" width="1800" height="1013" /></p>
<p>Add a Text module for the blue subtitle. Open its <strong>Design &gt; Text</strong> settings and use Inter 500 at 64px and #022eee.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Directory-subtitle-typography-settings.jpg" alt="Directory subtitle typography settings" width="1800" height="1013" /></p>
<p>Select the adjacent introduction Text module. Add a short explanation of the directory and use its <strong>Design &gt; Text</strong> settings to set the text size to 18px.</p>
<h2>5. Build One Dynamic Course Card</h2>
<p>Below the introduction, add an H2 Heading module for the course-list heading and a Text module for a short supporting note. Select the Heading module and open <strong>Design &gt; Heading Text</strong> for Inter 500, 26px, and black.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Courses-heading-typography-settings.jpg" alt="Courses heading typography settings" width="1800" height="1013" /></p>
<p>Select the note’s Text module and open <strong>Design &gt; Text</strong> for 15px and rgba(0,0,0,0.75).</p>
<p>In each module’s <strong>Design &gt; Spacing</strong> settings, keep the heading’s bottom margin at 0px and give the note a 24px bottom margin.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Self-paced-note-bottom-margin-setting.jpg" alt="Self-paced note bottom margin setting" width="1800" height="1012" /></p>
<p>Add a Group beneath the note and label it <strong>Course grid</strong>. In <strong>Design &gt; Layout</strong>, choose <strong>Grid</strong>, set <strong>Number Of Columns</strong> to 3, and use 24px horizontal and vertical gaps. Keep the default 100% width in <strong>Course grid &gt; Design &gt; Sizing</strong>; the image below shows the Layout settings.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Three-column-Course-grid-layout-settings.jpg" alt="Three column Course grid layout settings" width="1800" height="1012" /></p>
<p>Inside that grid, add a Group labeled <strong>Course card</strong>. In its <strong>Content &gt; Loop</strong> settings, enable <strong>Loop Element</strong>, choose the post-type query, and select <strong>Courses</strong>. Give this Group a clear label so you can recognize it in the filter’s target list.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-card-loop-enabled-for-Courses.jpg" alt="Course card loop enabled for Courses" width="1800" height="1343" /></p>
<p>In the same Loop group, set <strong>Posts Per Page</strong> to 6, <strong>Order By</strong> to <strong>ID</strong>, and <strong>Order</strong> to <strong>Ascending</strong> so the sample courses stay in their creation order.</p>
<h3>Style The Course Card</h3>
<p>Select Course card and open <strong>Design &gt; Layout</strong>. Use a Flex column, stretch alignment, no wrapping, and zero gaps.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-card-Flex-column-layout.jpg" alt="Course card Flex column layout" width="1800" height="1343" /></p>
<p>With Course card selected, open <strong>Content &gt; Background</strong> and set its background to white. Under <strong>Design &gt; Border</strong>, apply 24px rounded corners.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-card-rounded-corner-settings.jpg" alt="Course card rounded corner settings" width="1800" height="1012" /></p>
<p>In the same Border group, apply a 1px solid border in rgba(0,0,0,0.12).</p>
<h3>Connect The Card Content</h3>
<p>Inside Course card, add an Image module. Select the Image module and open <strong>Content &gt; Image</strong>. Open the Image field’s dynamic-content picker and choose <strong>Loop Featured Image</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Loop-Featured-Image-binding.jpg" alt="Loop Featured Image binding" width="1800" height="1012" /></p>
<p>Leave the Image module’s <strong>Sizing</strong> settings at their defaults and check that the image fills the card.</p>
<p>For its alt text, open <strong>Advanced &gt; Attributes</strong> and add an attribute. Enter alt as the attribute name, choose <strong>Image</strong> as the target element, and set <strong>Attribute Value</strong> through dynamic content to <strong>Loop Post Title</strong>. Each directory image will use its course title as its alt text.</p>
<p>Add a Group after the Image module and label it <strong>Course details</strong>. In <strong>Design &gt; Layout</strong>, use a Flex column and explicitly set its horizontal and vertical gaps to 0px. We’ll control the space between its contents with module margins.</p>
<p>Open <strong>Design &gt; Spacing</strong> and give Course details 22px padding on all sides. Fill this Group with the category, title, and excerpt modules described below.</p>
<h4>Add The Category, Title, And Description</h4>
<p>Add a Text module for the category. Open the category Text module’s <strong>Content &gt; Text</strong> settings. In its dynamic-content picker, choose <strong>Loop Post Custom Field</strong>, then select <strong>Category</strong> (course_category) so each card displays its course’s value.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-category-custom-field-binding.jpg" alt="Course category custom field binding" width="1800" height="1012" /></p>
<p>In that module’s <strong>Design &gt; Text</strong> settings, use Inter 500, 13px, and #022eee.</p>
<p>Open the category module’s <strong>Design &gt; Spacing</strong> settings and set its bottom margin to 10px.</p>
<p>Add an H3 Heading module. Open <strong>Content &gt; Text</strong> and delete the module’s default heading text before inserting dynamic content. Then use the dynamic-content picker to choose <strong>Loop Post Title</strong>. The field should contain only the dynamic title, without the starter heading text beside it.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Loop-Post-Title-binding.jpg" alt="Loop Post Title binding" width="1800" height="1012" /></p>
<p>In the title module’s <strong>Design &gt; Heading Text</strong> settings, use Inter 500, 23px, 1.15em line height, -0.03em letter spacing, and black text.</p>
<p>In its <strong>Design &gt; Spacing</strong> settings, set its bottom margin to 12px.</p>
<p>Add a Text module for the description and open <strong>Content &gt; Text</strong>. Replace its starter content through the dynamic-content picker with <strong>Loop Excerpt</strong>. Open its <strong>Variable Settings</strong> and set <strong>Number Of Words</strong> to 30.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Dynamic-course-excerpt-and-word-limit.jpg" alt="Dynamic course excerpt and word limit" width="1800" height="1012" /></p>
<p>In the excerpt module’s <strong>Design &gt; Text</strong> settings, use Inter 400, 15px, 1.5em line height, and rgba(0,0,0,0.75).</p>
<p>Open the excerpt module’s <strong>Design &gt; Spacing</strong> settings and use a 20px bottom margin.</p>
<p>Finally, open its <strong>Design &gt; Sizing</strong> settings and set <strong>Min Height</strong> to 72px.</p>
<h4>Link The Image And Title To The Course</h4>
<p>Dynamic image and title content do not automatically make the card clickable. Add the links separately so visitors can open the course represented by each loop item.</p>
<ol>
<li>Select the card’s <strong>Image</strong> module in Layers and open <strong>Content &gt; Link</strong>.</li>
<li>Leave <strong>Open in Lightbox</strong> disabled. Beside <strong>Image Link URL</strong>, open the dynamic-content picker.</li>
<li>Under <strong>Loop Dynamic Content</strong>, choose <strong>Loop Link</strong>. Leave Before, After, and Loop Position empty, then click <strong>Apply</strong>.</li>
<li>Keep <strong>Image Link Target</strong> set to <strong>In The Current Tab</strong>.</li>
<li>Select the course-title <strong>Heading</strong> module and open <strong>Content &gt; Link</strong>.</li>
<li>For <strong>Module Link URL</strong>, open the dynamic-content picker and choose <strong>Loop Link</strong>. Leave the optional values empty and click <strong>Apply</strong>.</li>
<li>Keep <strong>Module Link Target</strong> set to <strong>In The Current Tab</strong>.</li>
</ol>
<p>Choose the link from <strong>Loop Dynamic Content</strong> so each repeated card opens its own course. A static course URL would send every card to the same destination.</p>
<p>These settings make the image and title clickable. The card’s category, description, and metadata remain supporting content.</p>
<h4>Add The Level And Duration</h4>
<p>For the metadata footer, add another Group inside Course details. With the footer Group selected, open <strong>Design &gt; Layout</strong>. Use a Flex row with <strong>Space Between</strong>, wrapping enabled, and a 10px horizontal gap.</p>
<p>Open the footer Group’s <strong>Design &gt; Spacing</strong> settings for 16px top padding.</p>
<p>Open its <strong>Design &gt; Border</strong> settings and apply a 1px top border in rgba(0,0,0,0.12). Then add two Text modules for the level and exact duration.</p>
<p>For the first Text module, open <strong>Content &gt; Text</strong>, use the dynamic-content picker to choose <strong>Loop Post Custom Field</strong>, then select <strong>Level</strong> (course_level).</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-level-dynamic-field-selection.jpg" alt="Course level dynamic field selection" width="1800" height="1012" /></p>
<p>Repeat for the second Text module, choosing <strong>Exact duration</strong> (course_duration_label).</p>
<p>For the Level Text module, open <strong>Design &gt; Text</strong> and use Inter 400, 14px, and black.</p>
<p>Apply the same typography to the Exact duration Text module.</p>
<p>You should see different course content repeated through the same card design. If every card shows the same text, reopen its dynamic-content setting and select the field from the loop’s course.</p>
<p>Below Course grid, add a Text module with guidance for visitors who cannot find a match. Explain that they can try another filter combination or use Reset filters. In <strong>Design &gt; Text</strong>, use 14px text.</p>
<p>This guidance remains visible beneath the directory, including when Divi displays its standard empty-results message. That default message can include generic wording about a page not being found, so the additional text should clearly explain what visitors can do next.</p>
<p>Open the guidance module’s <strong>Design &gt; Spacing</strong> settings and set its top margin to 24px.</p>
<h2>6. Add The Three Course Filters</h2>
<p>Between the introduction and the course-list heading, add a Group labeled <strong>Filter bar</strong>. Open its <strong>Content &gt; Elements</strong> settings to add the filter module next.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Empty-Filter-bar-Group-ready-for-Post-Filter.jpg" alt="Empty Filter bar Group ready for Post Filter" width="1800" height="1012" /></p>
<p>Place a <strong>Post Filter</strong> module inside Filter bar and label it Filter courses. Open <strong>Content &gt; Target</strong> and choose <strong>Course card</strong> from <strong>Target Loop</strong>, set <strong>Apply Mode</strong> to <strong>Auto</strong>, and set <strong>Relation</strong> to <strong>And</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-card-target-Auto-mode-and-And-relation.jpg" alt="Course card target Auto mode and And relation" width="1800" height="1012" /></p>
<p>Auto applies each selection as it changes. And requires the course to match every active dropdown. Choosing UI design and Beginner therefore narrows the result to beginner UI-design courses.</p>
<h3>Configure The Filter Items</h3>
<p>In the Post Filter module’s <strong>Content &gt; Elements</strong> settings, remove the starter controls and add a Post Filter Item. Under the item’s <strong>Content &gt; Field</strong> settings, configure Category as follows:</p>
<ul>
<li><strong>Field Type:</strong> Select.</li>
<li><strong>Field Label:</strong> Category.</li>
<li><strong>Field Value Type:</strong> Text.</li>
<li><strong>Field Option:</strong> the ACF field <strong>Category</strong> (course_category).</li>
<li><strong>Field Comparison:</strong> equals (=).</li>
<li><strong>Options Method:</strong> Automatic.</li>
<li><strong>Field Placeholder:</strong> All categories.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Category-Post-Filter-Item-settings.jpg" alt="Category Post Filter Item settings" width="1800" height="1012" /></p>
<p>Duplicate Category to create the Level item. Choose <strong>Level</strong> (course_level), use Level as its label, and enter All levels as its placeholder. Keep the remaining field settings the same.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Level-Post-Filter-Item-settings.jpg" alt="Level Post Filter Item settings" width="1800" height="1012" /></p>
<p>Duplicate an item again for Duration. Choose <strong>Duration band</strong> (course_duration_band), use Duration as its label, and enter Any duration as its placeholder. Keep the same Select, Text, equals, and Automatic settings.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Duration-Post-Filter-Item-settings.jpg" alt="Duration Post Filter Item settings" width="1800" height="1012" /></p>
<p>Because Automatic fills the dropdowns from stored field values, publish the sample courses before checking the controls.</p>
<p>If an option is missing after you add a new value, select the affected Category, Level, or Duration item in Layers. Open its <strong>Content &gt; Field</strong> settings, find <strong>Options Method: Automatic</strong>, click <strong>Clear Cached Options</strong>, and reload the page. The <a href="https://help.elegantthemes.com/en/articles/16187393-the-post-filter-items-in-divi-5">Post Filter Item documentation</a> explains the automatic and manual option settings.</p>
<h3>Style The Filter Bar</h3>
<p>Select Filter bar. In <strong>Content &gt; Background</strong>, use #f2f3f7. Set the corner radius to 24px in <strong>Design &gt; Border</strong>. In <strong>Design &gt; Spacing</strong>, use 24px padding on all sides and a 36px bottom margin.</p>
<p>Select the parent <strong>Post Filter</strong> module. In <strong>Design &gt; Layout</strong>, use a Flex row with <strong>No Wrap</strong>, a 20px horizontal gap, and a 16px vertical gap. Explicitly disabling wrapping keeps the third dropdown on the same desktop row.</p>
<p>For the Post Filter module’s width, use 82% in <strong>Design &gt; Sizing</strong>, leaving room for Reset. Set each child filter item’s width to 33.333%.</p>
<p>Return to <strong>Filter bar &gt; Design &gt; Layout</strong>. Use a Flex row with bottom alignment and 20px horizontal and vertical gaps. The bar now holds three unstyled fields; Reset is added afterward.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Filter-bar-Flex-layout.jpg" alt="Filter bar Flex layout" width="1800" height="1012" /></p>
<h4>Style The Filter Fields</h4>
<p>Under the parent module’s <strong>Design &gt; Field &gt; Input Text</strong> settings, use black Inter text at 16px for the values.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Filter-field-typography-settings.jpg" alt="Filter field typography settings" width="1800" height="1012" /></p>
<p>In the same Field group, use white backgrounds and set the label text to black Inter 500 at 14px. Set field padding to 12px vertically and 14px horizontally.</p>
<p>Still in <strong>Post Filter &gt; Design &gt; Field</strong>, open its <strong>Border</strong> controls. Apply 8px field corners and a 1px solid border in rgba(0,0,0,0.12).</p>
<p>With the Post Filter module selected, open the device/state menu at the upper right of its settings panel and choose <strong>Focus</strong>. In <strong>Design &gt; Field &gt; Border</strong>, use a 2px solid border in #022eee at 100% opacity. Afterward, return to Desktop.</p>
<h3>Add A Reset Button</h3>
<p>Inside Filter bar, add a separate Button module beside Post Filter. In <strong>Content &gt; Text</strong>, enter Reset filters. Open <strong>Content &gt; Link</strong> for the button URL, then use its dynamic-content picker to choose <strong>Current Page Link</strong>. This resolves to the directory’s clean permalink.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Reset-filters-Current-Page-Link-binding.jpg" alt="Reset filters Current Page Link binding" width="1800" height="1012" /></p>
<p>In the Reset Button module, open <strong>Design &gt; Button &gt; Text</strong> and use white Inter 500 text at 15px. Keep the icon disabled.</p>
<p>Under <strong>Button &gt; Border</strong>, set the corner radius to 999px and the border width to 0px.</p>
<p>Open the Reset Button module’s <strong>Design &gt; Button &gt; Background</strong> controls and set the background to black. Then open the module’s <strong>Design &gt; Spacing</strong> settings and use 14px padding vertically and 22px horizontally.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Reset-button-padding-settings.jpg" alt="Reset button padding settings" width="1800" height="1012" /></p>
<p>This button reloads the directory without the filtered query string. Because it clears all query parameters on this page, use this approach for the standalone directory shown here. It also avoids stale dropdown selections observed with the built-in Reset item after reloading a filtered view in the tested build.</p>
<h2>7. Adjust The Tablet And Phone Layouts</h2>
<p>Select Course grid and open <strong>Design &gt; Layout</strong>. Open the responsive control for <strong>Number Of Columns</strong>. In its <strong>Responsive Editor</strong>, set Desktop to 3, Tablet to 2, and Phone to 1. The three device rows below show those values together.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Desktop-tablet-and-phone-Course-grid-column-values.jpg" alt="Desktop tablet and phone Course grid column values" width="1440" height="1000" /></p>
<p>With the phone breakpoint selected, set the grid’s horizontal gap to 0px and retain its 24px vertical gap.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Phone-Course-grid-gap-settings.jpg" alt="Phone Course grid gap settings" width="1440" height="1000" /></p>
<h3>Set The Filter And Introduction Layouts</h3>
<p>Select Filter bar and choose Tablet in the settings-panel device menu. In <strong>Design &gt; Layout</strong>, use a Flex column and stretch alignment.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Tablet-Filter-bar-Flex-layout-settings.jpg" alt="Tablet Filter bar Flex layout settings" width="1440" height="1000" /></p>
<p>Select Post Filter and open <strong>Design &gt; Sizing</strong> to set its Tablet width to 100%.</p>
<p>Select Post Filter and choose Phone. In <strong>Design &gt; Layout</strong>, use a column.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Phone-Post-Filter-Flex-layout-settings.jpg" alt="Phone Post Filter Flex layout settings" width="1440" height="1000" /></p>
<p>Select each child filter item and open <strong>Design &gt; Sizing</strong> to set its Phone width to 100%.</p>
<p>Select Directory intro, choose Phone, and open <strong>Design &gt; Layout</strong> to use a column.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Phone-Directory-intro-layout.jpg" alt="Phone Directory intro layout" width="1800" height="1250" /></p>
<p>With Phone selected, open <strong>Hero text &gt; Design &gt; Sizing</strong> and set its width to 100%.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Phone-Hero-text-width-setting.jpg" alt="Phone Hero text width setting" width="1800" height="1168" /></p>
<p>Repeat the 100% Phone width for the adjacent introduction Text module.</p>
<p>Select the main Heading module, open <strong>Design &gt; Heading Text</strong>, and use the responsive control for its text size: 40px on tablet and 32px on phone. The screenshot shows the Phone value.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Phone-directory-heading-text-size.jpg" alt="Phone directory heading text size" width="1800" height="1168" /></p>
<p>Repeat the 40px Tablet and 32px Phone text sizes in <strong>Design &gt; Text</strong> for the blue subtitle Text module.</p>
<p>Select the section, choose Phone, and open <strong>Design &gt; Spacing</strong>. Set top and bottom padding to 36px.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Section-phone-padding.jpg" alt="Section phone padding" width="1800" height="1168" /></p>
<p>Save the page and check the frontend at desktop, tablet, and phone widths. The video below switches the native preview between desktop, tablet, and phone layouts. Labels should stay readable, cards should fit the screen, and the page should not scroll sideways.</p>
<p><video class="card lazy" preload="metadata" controls="controls" width="1800" height="150" playsinline webkit-playsinline muted><source type="video/mp4" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Desktop-tablet-and-phone-directory-preview.mp4" /></video></p>
<p>Click <strong>Save</strong> in the Builder’s upper-right toolbar, wait for saving to finish, then click <strong>Exit</strong>.</p>
<h2>8. Test The Directory</h2>
<p>On the frontend, choose UI design. The clip shows Category changing from All categories to UI design and the three matching courses appearing. The open dropdown menu is not visible in this recording.</p>
<p><video class="card lazy" preload="metadata" autoplay="autoplay" loop="loop" muted="" controls="controls" width="1800" height="150" playsinline webkit-playsinline><source type="video/mp4" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Selecting-UI-design-and-showing-its-three-matching-courses-1.mp4" /></video></p>
<p>With UI design selected, add <strong>Beginner</strong> and <strong>Under 3 hours</strong>. Web design fundamentals and Accessible interfaces should remain. Reload the filtered page and confirm that the selected values and results persist.</p>
<p>Click <strong>Reset filters</strong>. All six courses and the three dropdown placeholders should return.</p>
<p>Choose <strong>Development</strong>, <strong>Intermediate</strong>, and <strong>3–6 hours</strong>. Responsive layouts should be the only result. The continuous video shows these checks in order, including a scroll through the restored courses after Reset.</p>
<p><video class="card lazy" preload="metadata" controls="controls" width="1800" height="150" playsinline webkit-playsinline muted><source type="video/mp4" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Combined-course-filters-reload-Reset-and-Development-match.mp4" /></video></p>
<h3>Check The Course Links</h3>
<p>Click the remaining course’s title and confirm that it opens the Responsive layouts course page. Return to the directory, reset the filters, and open a different course through its image.</p>
<p>Repeat an image-link test after applying a filter. Confirm that the destination matches the course you clicked, rather than the first course in the loop or the directory itself.</p>
<p>Check the individual course page as well. Its main content should contain the information visitors need after leaving the directory. The directory’s card excerpt does not automatically become the body of that page.</p>
<h3>Check Empty Results And Keyboard Focus</h3>
<p>For an empty-result test, choose WordPress, Advanced, and 3–6 hours. No sample course matches that combination.</p>
<p>Divi displays its standard empty-results output, which can include <strong>No Results Found</strong> and generic wording about a page not being found. In this situation, the directory page is still available; the selected filters simply have no matching courses. Keep the explanatory guidance and Reset button available so visitors can recover.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Empty-course-results-and-reset-guidance.jpg" alt="Empty course results and reset guidance" width="1800" height="1156" /></p>
<p>Put keyboard focus on Category and press <strong>Tab</strong> to move to Level. Watch the blue outline move between those two controls in the clip.</p>
<p><video class="card lazy" preload="metadata" autoplay="autoplay" loop="loop" muted="" controls="controls" width="1800" height="150" playsinline webkit-playsinline><source type="video/mp4" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Moving-keyboard-focus-from-Category-to-Level-1.mp4" /></video></p>
<p>Continue tabbing through Duration and Reset, and check that selections work without a mouse. The short clip demonstrates only Category-to-Level focus movement.</p>
<p>After resetting the directory, continue to a course image link and press <strong>Enter</strong> to check that it opens the matching course.</p>
<p>The filter combinations, filtered reload, Reset behavior, and responsive grid were checked in the manually built native demo. Course navigation was also checked through a title and an image after filtering. Run these checks again with your own content before making the directory available to visitors.</p>
<h2>Download The Course Directory Layout</h2>
<p>The download contains the Divi Library layout, an ACF structure export, a sample-course reference file, six course images, and a README with setup instructions.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Contents-of-the-Course-Directory-Divi-Layout-download-1.jpg" alt="Contents of the Course Directory Divi Layout download" width="1800" height="825" /></p>
<p>Because the layout needs the course post type, fields, and content to display its cards, unzip the archive and read README.txt before importing.</p>
<p>The ACF import is an alternative to creating the post type and fields manually in sections 1 and 2. If you have already completed those sections, keep your existing setup and skip the ACF import. Importing another registration with the same course post-type key can create a conflict.</p>
<p>To use the supplied ACF structure on a site without that setup, open <strong>ACF &gt; Tools</strong>. In the Import panel, choose ACF Course Structure.json and click <strong>Import JSON</strong> to register Courses and its Course details fields. Use the Import panel on the right; the checkboxes on the left belong to the separate Export controls.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/ACF-structure-Import-JSON-panel.jpg" alt="ACF structure Import JSON panel" width="1800" height="1513" /></p>
<p>Upload the images to your Media Library, then create each of the six course records manually using Sample Courses.json as a reference. This reference file is not a one-click WordPress content import. Use the course-entry example in section 3 for the fields, and add any course-page information to each record’s main content editor.</p>
<h3>Import The Layout Into Divi</h3>
<p>Open <strong>Divi &gt; Divi Library &gt; Import &amp; Export &gt; Import</strong>. Click <strong>Choose Files</strong>, select Web Design Course Directory.json, then click <strong>Import Divi Builder Layouts</strong>. The image shows the dialog before file selection.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-Library-import-dialog.jpg" alt="Divi Library import dialog" width="1800" height="1210" /></p>
<p>Create a directory page and open Divi Builder. In the Library picker’s <strong>Your Saved Layouts</strong> tab, select the imported Web Design Course Directory layout and click <strong>Use This Layout</strong>.</p>
<p>Use <strong>Replace Existing Content</strong> only on the new page whose content you intend to replace. The screenshot’s layout name includes a test-import suffix; select the layout you imported.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Imported-course-directory-layout-in-the-Divi-Library-picker-1.jpg" alt="Imported course directory layout in the Divi Library picker" width="1800" height="1250" /></p>
<p>Check its dynamic fields and target loop. To make the course images and titles clickable, follow <strong>Link The Image And Title To The Course</strong> in section 5.</p>
<p>Save the page and repeat the filter and course-link tests above. Follow the content setup instructions when moving the layout to a different site.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Imported-directory-displaying-the-course-cards-and-filter-controls-1.jpg" alt="Imported directory displaying the course cards and filter controls" width="1800" height="1956" /></p>
<p>Use the files below to start with the design, then replace the sample descriptions and illustrations with your own course content.</p>
<div class="et_bloom_locked_container et_bloom_optin_1" data-page_id="322582" data-optin_id="optin_1" data-list_id="mailchimp_c886a2fc0a" data-current_optin_id="optin_1">
					<div class="et_bloom_locked_content" style="display: none;">
						<a href="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-Directory-Divi-Layout.zip" class="button inline-button primary-button" rel=" ">Download the Files</a>
					</div>
					<div class="et_bloom_locked_form">
						<div class="et_bloom_inline_form et_bloom_optin et_bloom_make_form_visible et_bloom_optin_1" style="display: none;">
				<style type="text/css">.et_bloom .et_bloom_optin_1 .et_bloom_form_content { background-color: #4843d2 !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container .et_bloom_form_header { background-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge .et_bloom_form_content:before { border-top-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before, .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:before { border-top-color: transparent !important; border-left-color: #ffffff !important; }
						@media only screen and ( max-width: 767px ) {.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before { border-top-color: #ffffff !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:after { border-bottom-color: #ffffff !important; border-left-color: transparent !important; }
						}.et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_fields i { color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_custom_field_radio i:before { background: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_border_solid { border-color: #f7f9fb !important } .et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 strong { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; }.et_bloom .et_bloom_optin_1 .et_bloom_form_container p, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p strong, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form input, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form button span { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; } p.et_bloom_popup_input { padding-bottom: 0 !important;}</style>
				<div class="et_bloom_form_container  with_edge carrot_edge et_bloom_border_solid et_bloom_rounded et_bloom_form_text_light et_bloom_form_bottom et_bloom_inline_1_field">
					
			<div class="et_bloom_form_container_wrapper clearfix">
				<div class="et_bloom_header_outer">
					<div class="et_bloom_form_header split et_bloom_header_text_dark">
						<img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/plugins/bloom/images/premade-image-06.png" alt="Download For Free" class=" et_bloom_image_slideup et_bloom_image">
						<div class="et_bloom_form_text">
						<h2>Download For Free</h2><p>Join the Divi Newsletter and we will email you a copy of the ultimate Divi Landing Page Layout Pack, plus tons of other amazing and free Divi resources, tips and tricks. Follow along and you will be a Divi master in no time. <em>If you are already subscribed simply type in your email address below and click download to access the layout pack.</em></p>
					</div>
						
					</div>
				</div>
				<div class="et_bloom_form_content et_bloom_1_field et_bloom_bottom_inline">
					
					
					<form method="post" class="clearfix">
						<div class="et_bloom_fields">
							
							<p class="et_bloom_popup_input et_bloom_subscribe_email">
								<input placeholder="Enter your email address">
							</p>
							
							<button data-optin_id="optin_1" data-service="mailchimp" data-list_id="c886a2fc0a" data-page_id="322582" data-account="Divi Daily" data-ip_address="true" class="et_bloom_submit_subscription et_bloom_submit_subscription_locked">
								<span class="et_bloom_subscribe_loader"></span>
								<span class="et_bloom_button_text et_bloom_button_text_color_light">DOWNLOAD</span>
							</button>
						</div>
					</form>
					<div class="et_bloom_success_container">
						<span class="et_bloom_success_checkmark"></span>
					</div>
					<h2 class="et_bloom_success_message">You have successfully subscribed. Please check your email address to confirm your subscription and get access to free weekly Divi layout packs!</h2>
					
				</div>
			</div>
			<span class="et_bloom_close_button"></span>
				</div>
			</div>
					</div>
				</div>
<h2>Keep Your Course Directory Current</h2>
<p>To add another course, create its record in Courses and fill in the same fields, keeping the exact duration and its band consistent. Follow the course-entry example in section 3.</p>
<p>The example shows up to six courses. For a larger catalog, select Course card in Layers and open <strong>Content &gt; Loop &gt; Posts Per Page</strong>. Increase that value to include all your entries; the image shows the example’s current value of 6. A paginated directory can be a later extension.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Course-card-loop-per-page-setting.jpg" alt="Course card loop per page setting" width="1440" height="1000" /></p>
<p>You can change the card design once in the loop and apply that presentation across the catalog. The same course fields continue to supply the dropdowns, giving visitors a way to find courses that match their subject, experience, and available time.</p>
<p>When adding or changing courses, check their links and destination content as well as their filter values.</p>
<h2>Build Your Course Directory With Divi 5</h2>
<p>With <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>, you can turn a collection of courses into a directory that helps visitors choose where to start. The <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-divi-5s-loop-builder">Loop Builder</a> keeps your course cards consistent, while the <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-should-know-about-the-loop-filter-modules-in-divi-5">Loop Filter Modules</a> let visitors narrow the selection by category, level, and duration.</p>
<p>Start with the downloadable layout or build the example step by step, then replace the sample content with your own courses. Before sharing your directory, check its filters, course links, and responsive layouts so visitors can find a suitable course and open its details.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-course-directory-with-category-level-and-duration-filters">How To Create A Course Directory With Category, Level, And Duration Filters</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-course-directory-with-category-level-and-duration-filters/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-To-Create-A-Course-Directory-With-Category-Level-And-Duration-Filters.jpg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>Give Your Divi Designs A New Look With The Icon Manager</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/give-your-divi-designs-a-new-look-with-the-icon-manager</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/give-your-divi-designs-a-new-look-with-the-icon-manager#respond</comments>
		
		<dc:creator><![CDATA[Christopher Morris]]></dc:creator>
		<pubDate>Thu, 12 Nov 2026 16:00:57 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=322941</guid>

					<description><![CDATA[<p>A coffee cup can feel like a quick stop or an invitation to stay. Its shape and weight contribute to that impression, alongside the words and colors around it. The new Icon Manager in Divi 5 makes it easier to bring another icon family into a design. You can import SVGs into a collection and [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/give-your-divi-designs-a-new-look-with-the-icon-manager">Give Your Divi Designs A New Look With The Icon Manager</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A coffee cup can feel like a quick stop or an invitation to stay. Its shape and weight contribute to that impression, alongside the words and colors around it.</p>
<p>The new <a href="https://www.elegantthemes.com/blog/theme-releases/icon-manager">Icon Manager</a> in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> makes it easier to bring another icon family into a design. You can import SVGs into a collection and choose them from the icon picker while you build.</p>
<p>Here are three sections with four icon styles each. The design stays fixed throughout each comparison, from the type and copy to the spacing between cards. Watch the icons change, then try the same approach in the Visual Builder.</p>
<h2>Four Icon Styles, Three Different Designs</h2>
<p>These examples cover three settings. A hotel’s amenity row, an adventure card, and a repair service’s process diagram give an icon different roles, so the examples below compare four families across all three:</p>
<ul>
<li><strong>Font Awesome Solid:</strong> A bold baseline available among Divi’s included icons.</li>
<li><strong><a href="https://fonts.google.com/icons" rel="noopener" target="_blank">Google Material Symbols Rounded</a>:</strong> Rounded shapes with an extensive library of subjects.</li>
<li><strong><a href="https://phosphoricons.com/" rel="noopener" target="_blank">Phosphor Regular</a>:</strong> A line-based style with room around its details.</li>
<li><strong><a href="https://lucide.dev/icons/" rel="noopener" target="_blank">Lucide</a>:</strong> A consistent outline family for another take on the same visual roles.</li>
</ul>
<p>Font Awesome is separate from the original <a href="https://www.elegantthemes.com/blog/resources/elegant-icon-font">Elegant Icon Font</a> included with Divi. The downloadable layouts use original ET icons as defaults. The comparisons also demonstrate separately imported SVGs.</p>
<p>The subjects vary between families. Lucide uses footprints for walking; Phosphor’s sailboat gives the water card a boating theme.</p>
<h2>1. Sunday House: A Softer Welcome</h2>
<p>Sunday House invites a slower pace. Its warm cream background, editorial headline, and postcard illustration set the mood before four small icons introduce coffee, walks, dining, and the evening.</p>
<p>Watch how the filled cup and moon hold more visual weight than their outlined alternatives. The headline and postcard remain in place as the four families rotate through the amenities row.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/hotel-comparison.mp4" /></video></p>
<p>Watch the amenities row. The dense, solid icons establish a rhythm across the bottom of the section that remains easy to pick out beneath the much larger headline.</p>
<p>Phosphor Regular leaves more empty space inside the cup and other symbols. That gives the amenities a lighter presence alongside the delicate rules and serif typography. Material Symbols Rounded offers another interpretation of those familiar objects; Lucide introduces a different walking cue through footprints.</p>
<p>Here is the Phosphor version as a still. Notice the balance between the fine icon shapes and the stronger headings immediately beneath them.</p>
<p><img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/hotel-2.webp" alt="Sunday House hotel section with Phosphor Regular coffee, walking, dining, and moon icons" width="1800" /></p>
<p>For a hospitality design, check whether the icons support the atmosphere you want. A small amenity row can carry useful information without competing with the main invitation.</p>
<h2>2. Outside People: Give The Cards Some Energy</h2>
<p>Outside People puts its icons in a louder setting. Lime, lavender, and cream cards sit against a dark background, with oversized symbols above condensed uppercase headings.</p>
<p>At this scale, the icon family becomes a major part of each card. Compare the solid mountain silhouette with the more open line drawings, then follow the cycling symbol through the sequence.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/outdoor-comparison.mp4" /></video></p>
<p>Font Awesome holds its own here. The large areas of dark ink give the mountain and bicycle enough presence to compete with the bright cards and forceful headings.</p>
<p>The color comes through. With open line drawings, more of each card’s surface remains visible inside the icon, which changes its balance against the large headline. Phosphor’s sailboat also turns a general water activity into a boating cue; choose the subject that fits your offering.</p>
<p>The solid version below shows how much of the composition those three symbols occupy. Judge your candidates in their actual cards, with the final labels in place.</p>
<p><img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/outdoor-0.webp" alt="Outside People adventure cards with bold mountain, water, and bicycle icons" width="1800" /></p>
<p>Keep the drawing style consistent across the row. Mixing a heavy mountain with a delicate bicycle can make one activity appear more important, even when the cards have equal space.</p>
<h2>3. Fix!: Carry The Same Style Across Sizes</h2>
<p>The repair section uses a wrench inside its large orange badge, then repeats the visual language in three job-sheet cards. Search, repair, and completion turn the service into an understandable sequence.</p>
<p>This example lets you judge a family at two sizes. Watch the hero wrench first, then compare the smaller icons in the cards beneath it.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/repair-comparison.mp4" /></video></p>
<p>The filled wrench gives the badge a strong center. An outlined wrench reveals more orange and makes the badge feel less dense, while the surrounding lettering stays unchanged.</p>
<p>In the cards, pay attention to the search icon’s handle and the space inside the wrench. Details that look attractive at hero size also need to remain legible in a smaller supporting role.</p>
<p>Lucide connects the badge to the process cards through the same outline treatment. See how the smaller wrench echoes the one above it.</p>
<p><img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/repair-3.webp" alt="Fix repair service section with Lucide wrench, search, and completion icons" width="1800" /></p>
<p>For a service business, the words still need to explain the process. An icon helps a reader scan the cards, while “Show us the problem” and “Leave it with us” supply the meaning.</p>
<h2>Try Another Icon Set In The Visual Builder</h2>
<p>You can repeat this comparison using the native <a href="https://www.elegantthemes.com/modules/icon/">Icon modules</a> in Outside People. Start with a small collection containing the three symbols the cards need.</p>
<h3>The SVGs In This Example</h3>
<p>For the Phosphor version, use the Regular versions of <a href="https://github.com/phosphor-icons/core/blob/main/assets/regular/mountains.svg" rel="noopener" target="_blank">Mountains</a>, <a href="https://github.com/phosphor-icons/core/blob/main/assets/regular/sailboat.svg" rel="noopener" target="_blank">Sailboat</a>, and <a href="https://github.com/phosphor-icons/core/blob/main/assets/regular/person-simple-bike.svg" rel="noopener" target="_blank">Person Simple Bike</a>. The collection uses one file for each card.</p>
<p>Google also offers SVG downloads through its Material Symbols library, and Lucide provides SVGs through its icon browser. Google’s symbols use <a href="https://developers.google.com/fonts/docs/material_symbols" rel="noopener" target="_blank">Apache 2.0</a>; Phosphor uses the <a href="https://github.com/phosphor-icons/core/blob/main/LICENSE" rel="noopener" target="_blank">MIT license</a>. See <a href="https://lucide.dev/license" rel="noopener" target="_blank">Lucide’s license page</a> for its ISC terms and notices for icons derived from Feather. Keep the applicable notices when using or redistributing assets.</p>
<h3>Import The Collection</h3>
<p>Begin on the Outside People page. In the <a href="https://www.elegantthemes.com/no-code-design/">Visual Builder</a>, open an Icon module inside one of the activity cards and follow these steps:</p>
<ol>
<li>Under <strong>Content</strong>, open the <strong>Icon</strong> group and click the current icon preview.</li>
<li>Click <strong>Icon Manager</strong> at the bottom of the picker.</li>
<li>Click <strong>Import Icons</strong>, then <strong>Choose Icon Files</strong>, and select the three SVGs.</li>
<li>Choose <strong>New Collection</strong> and enter a descriptive name, such as <strong>Outside People — Phosphor</strong>.</li>
<li>Click <strong>Import</strong> and wait for the icons to appear in the collection.</li>
</ol>
<p>The recording follows that upload through the actual Icon Manager. A project-specific collection name makes it easier to find when you return to the picker.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/outside-people-upload.mp4" /></video></p>
<h3>Change The Icons And Save</h3>
<p>Return to the picker. Close the manager, open the module’s icon preview again, and filter to your new collection so only its three choices appear. Choose Mountains for the first card.</p>
<p>Open the second card’s Icon module and choose Sailboat from the same collection. Repeat with Person Simple Bike on the third card, then click <strong>Save</strong>.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/outside-people-change-icons.mp4" /></video></p>
<p>Keep the design unchanged while judging the swap. Once the family feels right, use the module’s design settings to refine the size and color where needed.</p>
<h2>Keep The Icons In Balance With The Type</h2>
<p>An icon’s nominal size does not tell you how large it will look. A filled silhouette can feel heavier than a line drawing inside the same bounding box. Compare the row as a whole and make small optical adjustments after choosing the family.</p>
<p>Type can help, too. With a supported font, Divi’s <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-variable-fonts-in-divi-5">variable font controls</a> expose axes such as weight and width, while the accompanying text settings give you control over wrapping and capitalization. A tightly condensed heading and a broad serif heading may call for different icon weights.</p>
<p>The layouts use responsive values, including <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-divi-5s-advanced-units">clamp()</a>, through Divi’s own settings. Check your phone view. When the cards stack, large icons take on a different relationship to the heading beside or beneath them; our <a href="https://www.elegantthemes.com/blog/divi-resources/managing-fonts-and-font-sizes-with-divi-5">font sizing guide</a> covers the type adjustments available.</p>
<p>Keep the labels visible. Where an icon only decorates equivalent text, it can be hidden from assistive technology so the information is not announced twice. An interactive icon needs an accessible name explaining its action; color alone should not supply that meaning.</p>
<p>For a standalone illustration that needs SVG-specific styling, Divi’s <a href="https://www.elegantthemes.com/blog/divi-resources/exploring-divi-5s-new-svg-module">SVG module</a> is another relevant option. These examples use Icon modules so the collection picker remains the central workflow.</p>
<h2>Download The Three Layouts</h2>
<p>The download contains Sunday House, Outside People, and Fix! as individual Divi Library JSONs, plus one combined Library export containing all three. Each layout uses native Divi modules and original ET icons by default, with no custom CSS.</p>
<p>No third-party icon files or custom icon collections come with the pack. Some default symbols are approximations: the outdoor cards use a compass, map, and location pin, for example. Import your chosen SVGs separately to reproduce the other styles above. The hotel’s decorative postcard image is included.</p>
<p><img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/download-contents.jpg" alt="Four Divi Library JSON files: Sunday House, Outside People, Fix, and a combined export" width="1800" /></p>
<p>These are Divi Library exports. Our <a href="https://help.elegantthemes.com/en/articles/8626073-importing-exporting-divi-builder-layouts-library-collections">Library import and export guide</a> explains how that format moves between websites.</p>
<div class="et_bloom_locked_container et_bloom_optin_1" data-page_id="322941" data-optin_id="optin_1" data-list_id="mailchimp_c886a2fc0a" data-current_optin_id="optin_1">
					<div class="et_bloom_locked_content" style="display: none;">
						<a href="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/icon-style-layouts-et-defaults.zip" class="button inline-button primary-button" rel=" ">Download the Files</a>
					</div>
					<div class="et_bloom_locked_form">
						<div class="et_bloom_inline_form et_bloom_optin et_bloom_make_form_visible et_bloom_optin_1" style="display: none;">
				<style type="text/css">.et_bloom .et_bloom_optin_1 .et_bloom_form_content { background-color: #4843d2 !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container .et_bloom_form_header { background-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge .et_bloom_form_content:before { border-top-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before, .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:before { border-top-color: transparent !important; border-left-color: #ffffff !important; }
						@media only screen and ( max-width: 767px ) {.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before { border-top-color: #ffffff !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:after { border-bottom-color: #ffffff !important; border-left-color: transparent !important; }
						}.et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_fields i { color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_custom_field_radio i:before { background: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_border_solid { border-color: #f7f9fb !important } .et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 strong { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; }.et_bloom .et_bloom_optin_1 .et_bloom_form_container p, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p strong, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form input, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form button span { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; } p.et_bloom_popup_input { padding-bottom: 0 !important;}</style>
				<div class="et_bloom_form_container  with_edge carrot_edge et_bloom_border_solid et_bloom_rounded et_bloom_form_text_light et_bloom_form_bottom et_bloom_inline_1_field">
					
			<div class="et_bloom_form_container_wrapper clearfix">
				<div class="et_bloom_header_outer">
					<div class="et_bloom_form_header split et_bloom_header_text_dark">
						<img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/plugins/bloom/images/premade-image-06.png" alt="Download For Free" class=" et_bloom_image_slideup et_bloom_image">
						<div class="et_bloom_form_text">
						<h2>Download For Free</h2><p>Join the Divi Newsletter and we will email you a copy of the ultimate Divi Landing Page Layout Pack, plus tons of other amazing and free Divi resources, tips and tricks. Follow along and you will be a Divi master in no time. <em>If you are already subscribed simply type in your email address below and click download to access the layout pack.</em></p>
					</div>
						
					</div>
				</div>
				<div class="et_bloom_form_content et_bloom_1_field et_bloom_bottom_inline">
					
					
					<form method="post" class="clearfix">
						<div class="et_bloom_fields">
							
							<p class="et_bloom_popup_input et_bloom_subscribe_email">
								<input placeholder="Enter your email address">
							</p>
							
							<button data-optin_id="optin_1" data-service="mailchimp" data-list_id="c886a2fc0a" data-page_id="322941" data-account="Divi Daily" data-ip_address="true" class="et_bloom_submit_subscription et_bloom_submit_subscription_locked">
								<span class="et_bloom_subscribe_loader"></span>
								<span class="et_bloom_button_text et_bloom_button_text_color_light">DOWNLOAD</span>
							</button>
						</div>
					</form>
					<div class="et_bloom_success_container">
						<span class="et_bloom_success_checkmark"></span>
					</div>
					<h2 class="et_bloom_success_message">You have successfully subscribed. Please check your email address to confirm your subscription and get access to free weekly Divi layout packs!</h2>
					
				</div>
			</div>
			<span class="et_bloom_close_button"></span>
				</div>
			</div>
					</div>
				</div>
<p>Start with the design closest to your project and compare two icon families before changing anything else. When you can see the difference in context, choosing icons becomes a more deliberate design decision.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/give-your-divi-designs-a-new-look-with-the-icon-manager">Give Your Divi Designs A New Look With The Icon Manager</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/give-your-divi-designs-a-new-look-with-the-icon-manager/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Blog-post-about-giving-Divi-designs-a-new-look-with-the-Icon-Manager.jpg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>The Ultimate Guide To Typography In Divi 5</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-typography-in-divi-5</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-typography-in-divi-5#respond</comments>
		
		<dc:creator><![CDATA[Aayush]]></dc:creator>
		<pubDate>Wed, 11 Nov 2026 16:00:00 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<category><![CDATA[typography]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=320206</guid>

					<description><![CDATA[<p>A heading can look right on its own and still feel out of place on the page. Add a different font weight to the next section, tighten the body copy somewhere else, and the small decisions start pulling against each other. Typography becomes easier to manage when those decisions share a structure. Divi 5 gives [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-typography-in-divi-5">The Ultimate Guide To Typography In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A heading can look right on its own and still feel out of place on the page. Add a different font weight to the next section, tighten the body copy somewhere else, and the small decisions start pulling against each other. Typography becomes easier to manage when those decisions share a structure.</p>
<p><a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> gives you several ways to build that structure. Variables hold reusable values, text settings shape individual roles, and presets carry those combinations across your site. You can start with readable headings and paragraphs, then add responsive sizing, variable font controls, and text effects where they serve the design.</p>
<p>Begin with your text roles, connect them to variables, and save the combinations you want to repeat. The steps below take you through that setup and show what to check before using it across your site.</p>
<h2>How Typography Guides Readers</h2>
<p>Typography gives a page its reading order. A clear heading tells visitors where a section begins; consistent body text lets them settle into the explanation. Font choice, spacing, and contrast influence how comfortable that reading experience feels.</p>
<p>Consider the consultant layout below. The name carries the most visual weight, the section heading introduces the next topic, and the supporting text occupies a separate role. Those differences help readers understand the page without making every line compete for attention.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/editorial-typography-hierarchy-on-the-consultant-demo.jpg" alt="Editorial typography hierarchy on the consultant demo" width="1800" height="932" /></p>
<p>When similar headings change size between pages, readers have to interpret the hierarchy again. Consistent styles give them familiar cues as they move through the site.</p>
<p>Screen size introduces another constraint. A long heading needs room to wrap on a phone, while a wide paragraph needs a controlled reading width on desktop. Changing font size alone may leave awkward line breaks or cramped spacing. A useful typography system considers the text and its container together.</p>
<h2>How Divi 5&#8217;s Typography Tools Work Together</h2>
<p>Divi&#8217;s typography workflow connects shared values with reusable combinations of settings. Understanding those layers helps you choose where each decision belongs.</p>
<h3>Design Variables For Shared Fonts, Colors, And Sizes</h3>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/part-3-creating-a-divi-5-global-design-system-with-design-variables">Design Variables</a> store named values that you can reference in compatible fields. Open the <strong>Variable Manager</strong> from the <a href="https://www.elegantthemes.com/no-code-design/">Visual Builder</a>&#8216;s left sidebar to manage them.</p>
<p>For typography, the most useful types are <strong>Fonts</strong>, <strong>Numbers</strong>, and <strong>Colors</strong>. A font variable holds the family, a number variable can hold a size or other numeric value, and a color variable holds a shared color. Divi also supports variables for other design and content values, including gradients, images, text, and links.</p>
<p>A variable affects the fields that reference it. Creating a heading-size variable makes the value available; assigning it to a heading connects that heading to future changes. Presets help you repeat those assignments across compatible elements.</p>
<h3>Static Fonts And Variable Fonts</h3>
<p>A static font supplies distinct styles, such as Regular, Bold, and Italic, commonly in separate files. When a requested weight is unavailable, the browser follows font-matching rules to select an available face. Browsers can also synthesize bold or oblique treatments when allowed. Check that your intended faces are available and preview the result in the browser.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/georgia-static-font-family-and-regular-weight-in-divi-5.jpg" alt="Georgia static font family and Regular weight in Divi 5" width="1800" height="967" /></p>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-variable-fonts-in-divi-5">Variable fonts</a> contain variation data that supports a range of styles in one font resource. An axis controls an aspect of that variation, such as weight or width. Intermediate values are calculated from the font&#8217;s designed data, allowing finer adjustments within its supported range.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/roboto-flex-variable-font-weight-set-to-800.jpg" alt="Roboto Flex variable font weight set to 800" width="1800" height="967" /></p>
<p>The available axes depend on the typeface. One font may offer weight alone; another may include width, slant, optical size, grade, and additional controls. In Divi 5, choosing a supported Google variable font exposes its applicable controls in the module&#8217;s text settings.</p>
<p>The clip below changes the consultant heading’s Roboto Flex Weight from 800 to 400, then restores 800. Other fonts can expose different axes and ranges.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Variable font weight in the editorial demo" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/variable-font-weight-in-the-editorial-demo.mp4" type="video/mp4" /></video></p>
<h3>Text Layout, Flow, And Effects</h3>
<p>Font settings determine the appearance of letters. Flow controls determine how those letters occupy the available space. Divi&#8217;s relevant text groups include options for columns, wrapping, direction, hyphenation, and paragraph spacing. Body text also supports drop caps.</p>
<p>These controls suit different roles. Balanced wrapping can help a short heading, while a longer article may benefit from paragraph spacing and carefully chosen column widths.</p>
<p>The clip below turns on a gradient fill for the consultant heading, showing one display effect in the same layout.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Gradient heading fill in the editorial demo" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/gradient-heading-fill-in-the-editorial-demo.mp4" type="video/mp4" /></video></p>
<p>For display text, Divi also offers <a href="https://www.elegantthemes.com/blog/theme-releases/new-gradient-editor-gradient-variables-text-effects-and-more">gradient and image fills</a>, transparent fills, and strokes. A gradient variable can connect a heading&#8217;s fill to other uses of that gradient. The heading remains editable text.</p>
<h3>Option Group Presets And Element Presets</h3>
<p><a href="https://help.elegantthemes.com/en/articles/13349301-advanced-styling-using-option-group-presets-in-divi-5">Option Group Presets</a> save settings from a compatible group, such as heading typography. That preset can combine a font reference, a size reference, weight, line height, and letter spacing into one reusable treatment.</p>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-presets-in-divi-5-including-new-features">Element Presets</a> collect the styling of a particular element type. A Text module preset can include its heading and body typography treatments alongside spacing and other settings. It becomes available to other Text modules; a different element type has its own presets.</p>
<p>Editing a shared preset updates connected elements, subject to their other presets and local overrides. Variables hold values, settings reference those values, and presets distribute the combinations you want to repeat.</p>
<h2>Build A Typography System In Divi 5</h2>
<p>Start with the text roles your site needs, then create shared values and apply them to representative content. The consultant layout gives us a useful mix of display text, section headings, descriptions, and supporting details. It uses native Divi settings throughout.</p>
<h3>Plan Your Typography Roles</h3>
<p>Choose a manageable set of roles before adjusting individual modules. A portfolio might need a display heading for the person’s name, section headings for experience and projects, body copy for descriptions, and smaller text for dates or contact details.</p>
<p>Give each role a purpose. H1 identifies the main page heading; H2 introduces a major section; H3 introduces a subsection. Use further levels when the content structure requires them. Choose the semantic heading level for its place in that structure, then style its visual size separately.</p>
<p>One font family can cover several roles. A second family may provide a useful contrast between headings and body copy. Begin with the smallest selection that gives your content a clear hierarchy, then test it with real text.</p>
<h3>Set Your Heading And Body Font Variables</h3>
<p>Open the <strong>Variable Manager</strong> and expand <strong>Fonts</strong>. The screenshots use <strong>Heading</strong> and <strong>Body</strong> variables, pairing <strong>Roboto Flex</strong> for headings with <strong>Georgia</strong> for body copy. Choose the family for each role, click <strong>Save Variables</strong>, then confirm <strong>Apply Changes</strong>.</p>
<p>On an established site, check where an existing font variable is used before changing it. Add separately named variables if this typography system should remain independent of the site’s current styles.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/heading-and-body-font-variables-using-roboto-flex-and-georgia.jpg" alt="Heading and Body font variables using Roboto Flex and Georgia" width="1800" height="967" /></p>
<p>The font picker provides access to Google Fonts and any custom fonts available on your site. Choose a supported variable font when you want to use its axis controls. You will configure those controls in the module&#8217;s relevant text group after selecting the family.</p>
<p>Keep the variable names tied to roles. <strong>Heading</strong> and <strong>Body</strong> remain understandable if the chosen typeface changes later. A font variable establishes the family; the rest of the typography treatment comes from settings and presets.</p>
<h3>Generate And Save A Responsive Type Scale</h3>
<p>A type scale establishes sizes for your text roles, with smaller and larger steps built around a base value. Open the <strong>Numbers</strong> group in the Variable Manager, hover over its heading, and choose <strong>Generate Fluid Sizing Variables</strong>. In the <a href="https://www.elegantthemes.com/blog/divi-resources/creating-a-fluid-responsive-sizing-system-with-divi-5s-variable-generator">Variable Generator</a>, set <strong>Variable Type</strong> to <strong>Font Size</strong>.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Opening the Font Size Variable Generator" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/opening-the-font-size-variable-generator.mp4" type="video/mp4" /></video></p>
<p>Choose how those sizes should adapt using <strong>Scale Type</strong>. Divi offers three options:</p>
<ul>
<li><strong>Fluid Scale (CSS Clamp):</strong> Uses clamp() values to scale between defined bounds as the viewport changes.</li>
<li><strong>Fixed Scale (Responsive):</strong> Creates separate sizes for the configured breakpoints.</li>
<li><strong>Fixed Scale (Single):</strong> Creates values that stay the same across screen widths.</li>
</ul>
<p>Start with a fluid scale when headings should grow smoothly with the layout. If a design calls for an exact size at a particular breakpoint, use fixed responsive values and set those changes explicitly. The fixed-size example below uses 72px for desktop, 40px for tablet, and 24px for phone. The clip opens those values in the heading’s Responsive Editor.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Responsive heading values in the editorial demo" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/responsive-heading-values-in-the-editorial-demo.mp4" type="video/mp4" /></video></p>
<p>Review the base sizes, ratios, and viewport range in the generator. Set the <strong>Variable Prefix</strong> to <strong>text-</strong>. Use a <strong>1.125</strong> minimum scale and a <strong>1.25</strong> maximum scale, with a 360px viewport lower limit, an 80% desktop row width, and a 1080px desktop row maximum. Keep rem units with 1rem equal to 16px. With a base minimum of 16px and a base maximum of 18px, <strong>text-m</strong> spans 16–18px, while <strong>text-xl</strong> spans approximately 20.25–28.13px.</p>
<p>Adjust the base size or ratios and the values change, so the same variable name can represent different sizes on another site.</p>
<p>Choose each step by its actual size and intended role. You might use text-m for body copy, a larger step for section headings, and another larger step for display text. The labels describe scale steps, so check the actual range before assigning a role. Reserve smaller values for supporting content only when they remain comfortable to read.</p>
<p>Click <strong>Add Variables To My Site</strong> when the scale looks suitable. Review the imported values in <strong>Numbers</strong>, then click <strong>Save Variables</strong> and confirm <strong>Apply Changes</strong>. The sizes are now available for assignment in compatible fields. Creating the scale leaves the choice of which step belongs on each heading to you.</p>
<h3>Configure Heading, Body, And Link Colors</h3>
<p>Expand <strong>Colors</strong> in the Variable Manager. The example contains <strong>Primary Color</strong>, <strong>Secondary Color</strong>, <strong>Heading Text Color</strong>, <strong>Body Text Color</strong>, and <strong>Link Color</strong>. Set <strong>Heading Text Color</strong> to a value that works against your intended background. The screenshot uses <strong>#191919</strong>.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/heading-text-color-variable-set-to-191919.jpg" alt="Heading Text Color variable set to 191919" width="1800" height="967" /></p>
<p>For a related body color, open the <strong>Body Text Color</strong> picker and select <strong>Heading Text Color</strong> under <strong>Global Colors</strong>. The field should show the named color as a chip. Set its opacity to <strong>80%</strong>, save the variables, and confirm <strong>Apply Changes</strong>.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/body-text-color-references-heading-text-color-at-80-percent-opacity.jpg" alt="Body Text Color references Heading Text Color at 80 percent opacity" width="1800" height="967" /></p>
<p>Typing the same hex value creates an independent color; selecting the global color keeps the relationship. Changing Heading Text Color then changes its derived body color. At 80% opacity, the foreground is twenty percent transparent.</p>
<p>Treat that opacity as a design example. A translucent foreground combines with the background beneath it, so the result needs checking on every surface where it appears. Normal text generally needs a contrast ratio of at least <strong>4.5:1</strong>; qualifying large text needs at least <strong>3:1</strong> under the <a href="https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html" rel="noopener" target="_blank">WCAG minimum contrast criterion</a>.</p>
<p>For links, select <strong>Primary Color</strong> as the reference for <strong>Link Color</strong> if it gives suitable contrast. Assign that link-color variable to the module’s link-color field and enable an underline in the <strong>Link</strong> tab. Check the result against its background and surrounding text. Add a separate light-text variable when the design needs one for dark sections.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/link-color-references-primary-color.jpg" alt="Link Color references Primary Color" width="1800" height="967" /></p>
<h3>Add Text And Set Meaningful Heading Levels</h3>
<p>For a passage with headings and paragraphs, use the <strong>Text Module</strong>. Its rich text editor also handles lists. Add the module to your layout and enter enough copy in the <strong>Content</strong> tab to judge the spacing between complete paragraphs.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/consultant-paragraph-in-the-text-module-visual-editor.jpg" alt="Consultant paragraph in the Text module visual editor" width="1800" height="967" /></p>
<p>Select the relevant text and choose its heading level from the editor&#8217;s formatting menu. The heading and its supporting paragraphs can stay together in one module.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/heading-levels-in-the-text-module-formatting-menu.jpg" alt="Heading levels in the Text module formatting menu" width="1800" height="967" /></p>
<p>The <strong>Heading Module</strong> is useful for a standalone heading. In its <strong>Design</strong> tab, open <strong>Heading Text</strong> and use <strong>Heading Heading Level</strong> to select H1 through H6. Choose the level that fits your page structure; its visual size can be configured separately.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/h1-heading-level-in-the-heading-module.jpg" alt="H1 heading level in the Heading module" width="1800" height="967" /></p>
<p>Choose other modules when the text needs a surrounding structure. A <strong>Blurb</strong> pairs it with an image or icon, while a <strong>Call To Action</strong> brings a heading and body copy together with a button. Apply your styles through the text groups each module provides.</p>
<h3>Apply Variables And Refine Your Text Styles</h3>
<p>Open the module&#8217;s <strong>Design</strong> tab and the text group for the content you want to style. The Heading module uses <strong>Heading Text</strong>; the body controls shown in our Text-module example are under <strong>Text</strong>.</p>
<p>Use the variable or dynamic-content icon beside a supported field to select its shared value. Assign the heading or body font variable to the font field, then choose the corresponding number and color variables for size and color.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/dynamic-content-icon-beside-heading-text-size.jpg" alt="Dynamic content icon beside Heading Text Size" width="1800" height="967" /></p>
<p>You can also enter a fluid expression directly in the size field. Below, <strong>Heading Text Size</strong> contains a clamp() expression. For a reusable system, select the named number variable so this role stays connected to the shared scale. A direct expression is useful for a local example, but it is not linked to a number variable.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/fluid-clamp-expression-in-heading-text-size.jpg" alt="Fluid clamp expression in Heading Text Size" width="1800" height="967" /></p>
<p>Size is one part of readability. Adjust <strong>Line Height</strong> while reading a complete paragraph, and give adjacent paragraphs enough space to remain distinct. Body copy often benefits from a line height around 1.5 as an initial design choice; test the actual typeface, size, and line length before settling it.</p>
<p>Keep the paragraph&#8217;s container narrow enough that your eye can find the next line comfortably. Long desktop lines may need a smaller content width. Tight mobile layouts may need more available width, fewer columns, or a different heading size. Use letter spacing carefully, especially on small body text.</p>
<h4>Refine Supported Variable Font Axes</h4>
<p>With a supported variable font selected, Divi exposes its applicable controls beneath the standard font settings. Adjust one control at a time while looking at the text in context.</p>
<ul>
<li><strong>Weight:</strong> Changes stroke weight along the font&#8217;s supported range, giving a section heading more presence even when its size stays the same.</li>
<li><strong>Width:</strong> Changes the letterforms&#8217; proportions. Check long headings and button labels after adjusting it.</li>
<li><strong>Slant:</strong> Adjusts the angle of the forms. True italic can involve different glyph designs, so choose an appropriate italic face or axis when that is the intended style.</li>
<li><strong>Optical Sizing:</strong> Allows supported fonts to adapt details for their display size. <strong>Auto</strong> is a useful starting point; judge the result with your content.</li>
<li><strong>Grade:</strong> Changes stroke density while preserving character advance widths, helping you adjust visual weight without the same spacing changes a weight adjustment can introduce.</li>
</ul>
<p>In the following example, Roboto Flex’s Weight stays at 800 while Grade changes from -25 to 100 and back. Adjust one axis at a time, inspect the rendered heading, and restore the value if the change does not help the role.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Variable font Grade in the editorial demo" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/variable-font-grade-in-the-editorial-demo.mp4" type="video/mp4" /></video></p>
<p>Some fonts expose additional axes for features such as roundness, stroke proportions, or letter heights. Use the controls that serve a repeatable role in your design. A body paragraph and a display heading can share the same family while using different axis settings.</p>
<p>Below, the About section heading uses Roboto Flex with a Weight of 500 and Optical Sizing on Auto. Read the heading at its intended size before adopting those values. The demo keeps Georgia for its body copy.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/section-heading-weight-500-and-automatic-optical-sizing.jpg" alt="Section heading weight 500 and automatic optical sizing" width="1800" height="967" /></p>
<h3>Adjust Responsive Values And Optional Text Effects</h3>
<p>A fluid variable changes size within its configured range. Inspect the result at intermediate widths as well as your main device views. Long names, narrow cards, and unexpected line breaks may require an adjustment to the scale or a local override.</p>
<p>The <a href="https://help.elegantthemes.com/en/articles/13002269-responsive-editor-in-divi-5-visual-builder">Responsive Editor</a> lets you inspect available responsive values together. Click the <strong>Edit Responsive Values</strong> icon beside the font-size field to open its panel.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/responsive-editor-icon-beside-heading-text-size.jpg" alt="Responsive Editor icon beside Heading Text Size" width="1800" height="967" /></p>
<p>For a separate fixed-size example, the panel below shows a <strong>72px</strong> desktop heading, a <strong>40px</strong> tablet heading, and a <strong>24px</strong> phone heading. The Responsive Editor also includes interaction-state rows; distinguish those from the device rows. Enter a value in the breakpoint row you want to override. A blank field follows the applicable inheritance chain, which can include another breakpoint&#8217;s override. Check the displayed inherited value before assuming it still uses your original fluid size. Reset an unwanted breakpoint override if that row should inherit again.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/desktop-tablet-and-phone-heading-sizes-in-the-responsive-editor.jpg" alt="Desktop tablet and phone heading sizes in the Responsive Editor" width="1800" height="967" /></p>
<h4>Shape Text Flow And Add Display Effects</h4>
<p>For longer passages, <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-create-magazine-style-blog-posts-with-divi-5s-new-text-styling-options">text flow controls</a> give you more ways to shape the reading experience. Choose them for the content they help organize:</p>
<ul>
<li><strong>Text Columns:</strong> Flows content through CSS columns. Keep the columns wide enough to read, and reduce their count when the layout becomes narrow.</li>
<li><strong>Drop Caps:</strong> Enlarges an opening letter, with surrounding text flowing around it. Check the first paragraph on a phone, where the letter occupies more of the available width.</li>
<li><strong>Line Wrap Style:</strong> Balanced wrapping helps distribute heading lines. Pretty wrapping can improve paragraph endings, depending on browser behavior.</li>
<li><strong>Hyphenation:</strong> Can help break words in narrow measures when the document language is set correctly and the browser supports hyphenation for that language.</li>
<li><strong>Text Direction And Capitalization:</strong> Provide treatments for labels and other display text. Keep longer reading passages easy to follow.</li>
</ul>
<h4>Add A Drop Cap</h4>
<p>To create the opening drop cap, open the Text module’s <strong>Design</strong> tab, expand <strong>Text</strong>, and select the <strong>Drop Cap</strong> tab. Set <strong>Drop Cap Line Size</strong> to <strong>3</strong> and <strong>Drop Cap Spacing</strong> to <strong>8px</strong>. Choose the drop cap’s font and color to suit the opening paragraph, then check its spacing on a narrow screen.</p>
<h4>Adjust Paragraph Flow</h4>
<p>Return to the body-text tab for paragraph spacing, line wrapping, direction, hyphenation, and columns. Try <strong>Pretty</strong> wrapping on a paragraph and compare its line endings. Hyphenation needs an appropriate document language and browser support. Set <strong>Text Columns</strong> to <strong>2</strong> only when the content area gives both columns enough width; return to one column on narrower layouts.</p>
<p>Text direction controls reading direction, including right-to-left content. Capitalization changes the visual case. Choose the direction that matches the content and use capitalization for the intended visual treatment.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/paragraph-spacing-and-hyphenation-controls.jpg" alt="Paragraph spacing and hyphenation controls" width="1800" height="967" /></p>
<h4>Style Display Text</h4>
<p>Choose the heading’s <strong>Fill Type</strong> and configure the gradient or image field that appears. Open the gradient picker, then add the background gradient and color stops. To repeat the treatment, reference a gradient variable so related headings stay connected when you adjust its colors.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/gradient-fill-applied-to-the-consultant-heading.jpg" alt="Gradient fill applied to the consultant heading" width="1800" height="967" /></p>
<p>For outlined text, choose <strong>Transparent</strong> fill and set a nonzero <strong>Stroke Width</strong>. Start with a <strong>2px</strong> stroke and adjust it to suit the text size. Stroke color and position controls appear once the stroke has a width. Choose a visible color and use <strong>Stroke Position</strong> for centered or outside placement.</p>
<p>Transparent fill without a visible stroke can make the letters disappear. Keep these effects selective and check legibility against the actual background, especially where gradients introduce lighter areas. Use responsive values only on fields that expose that capability.</p>
<h3>Save And Reuse Your Typography Presets</h3>
<p>Once a role works with representative content, save its settings as a preset. In <strong>Heading Text</strong>, hover over the group title and click the <strong>Assign Presets</strong> icon.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/option-group-preset-icon-beside-heading-text.jpg" alt="Option Group Preset icon beside Heading Text" width="1800" height="967" /></p>
<p>Choose <strong>New Preset From Current Styles</strong>, give it a role-based name such as <strong>Heading H2</strong>, review the included settings, and save the preset. Repeat for other roles that recur across your site.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/new-preset-from-current-styles-command.jpg" alt="New Preset From Current Styles command" width="1800" height="967" /></p>
<p>To reuse it, open the compatible text group on another element and select the saved preset. Review the heading level alongside the visual styling. A local heading level or size can take precedence over the assigned preset, so applying a preset does not guarantee that an existing module will adopt every value.</p>
<p>The video below selects <strong>Heading H2 — Editorial</strong> for the About heading in the consultant layout.</p>
<p><video class="card lazy" preload="metadata" loop="loop" muted="" controls="controls" width="1800" height="150" aria-label="Applying the editorial H2 preset" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/applying-the-editorial-h2-preset.mp4" type="video/mp4" /></video></p>
<p>Set a preset as the default when it should be the base treatment for that compatible group. Existing elements inheriting the default can change too. Local values and other assigned styles may take precedence, so check representative instances after changing a default. Select the appropriate preset for each role and check its heading-level setting.</p>
<p>For a reusable Text module configuration, combine the relevant text presets with its other shared styling. Click the <strong>Element Preset</strong> icon at the top of the module settings panel, create a preset from the current styles, name it, and save it. The Heading-module screenshot below shows the element-level control in the module header.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/element-preset-icon-in-the-module-header.jpg" alt="Element Preset icon in the module header" width="1800" height="967" /></p>
<p>The two layers remain connected when an Element Preset references Option Group Presets. Edit the shared text preset to adjust its connected uses, or change a referenced variable when the underlying value should change. Review any local overrides that make an instance behave differently.</p>
<h2>Check Your Typography Before Reusing It Site-Wide</h2>
<p>Give the system a small set of representative content before applying it broadly. Include a short heading, a long heading, several paragraphs, a list, a link, and a caption or supporting detail. Check both light and dark sections if your site uses them.</p>
<p>Inspect the rendered page as well as the builder&#8217;s previews, moving through intermediate widths between desktop and phone. A heading may fit at either end but break awkwardly between them. Look for clipped letters and paragraphs that become difficult to track.</p>
<p>Check the page after its web fonts finish loading, then compare it on the devices your readers use. System fonts such as Georgia depend on local availability; a fallback can change line breaks and spacing. A saved font-family setting does not guarantee identical letterforms on every device.</p>
<p>Try enlarging text to <strong>200%</strong> and confirm that content and controls remain available. The <a href="https://www.w3.org/WAI/WCAG22/Understanding/resize-text.html" rel="noopener" target="_blank">WCAG resize-text guidance</a> explains that requirement. Fluid sizing still needs this check because changing viewport width and enlarging text can interact.</p>
<p>User spacing adjustments need room too. <a href="https://www.w3.org/WAI/WCAG22/Understanding/text-spacing.html" rel="noopener" target="_blank">WCAG&#8217;s text-spacing criterion</a> checks whether content remains available when readers increase line and paragraph spacing, along with the spaces between letters and words. Those override tests assess the layout&#8217;s flexibility; you can choose different values for its default appearance.</p>
<h3>Troubleshoot Styles That Do Not Update</h3>
<p>When a style behaves differently from the rest of the system, inspect its connections first:</p>
<ul>
<li><strong>A size stays unchanged:</strong> Check whether the field references your number variable or holds a separate static value.</li>
<li><strong>Preset changes are missing:</strong> Confirm the element&#8217;s assigned preset, then inspect its local values. A local setting can take precedence over the preset.</li>
<li><strong>Axis controls are absent:</strong> Check that the selected font supports the axis and that you are viewing the relevant text group.</li>
<li><strong>Mobile text uses an unexpected size:</strong> Inspect the Responsive Editor for inherited values and explicit breakpoint settings.</li>
<li><strong>Body text loses contrast:</strong> Check its opacity and resulting color against the actual background.</li>
</ul>
<p>These checks help uncover practical problems in your typography system. They are part of a wider accessibility review that also considers navigation, controls, content structure, and other page behavior.</p>
<h2>Keep Your Typography Consistent As Your Site Grows</h2>
<p>A useful typography system gives each decision a clear home. Font, color, and size variables hold shared values. Text settings define readable roles. Presets let you carry those roles into the next page without rebuilding every combination.</p>
<p>Start with a few roles your content needs in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>, test them across screen sizes, and save the combinations that work. As the site grows, update those shared values and presets, then check representative pages for overrides and unexpected wrapping. That routine keeps everyday typography changes manageable while leaving room for a distinctive display treatment when the design calls for one.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-typography-in-divi-5">The Ultimate Guide To Typography In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/the-ultimate-guide-to-typography-in-divi-5/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/The-Ultimate-Guide-To-Typography-In-Divi-5.jpg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>WordPress vs EmDash (2026): Which Fits Your Next Site?</title>
		<link>https://www.elegantthemes.com/blog/wordpress/wordpress-vs-emdash</link>
					<comments>https://www.elegantthemes.com/blog/wordpress/wordpress-vs-emdash#respond</comments>
		
		<dc:creator><![CDATA[Christopher Morris]]></dc:creator>
		<pubDate>Tue, 10 Nov 2026 12:00:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[emdash]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=321605</guid>

					<description><![CDATA[<p>EmDash is an open-source content management system from Cloudflare, built in TypeScript on the Astro framework. Cloudflare introduced it as a spiritual successor to WordPress, and version 1.0 marked its first stable release. This article compares EmDash with WordPress based on the kind of site you are building and who will edit it. I have [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/wordpress/wordpress-vs-emdash">WordPress vs EmDash (2026): Which Fits Your Next Site?</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>EmDash is an open-source content management system from Cloudflare, built in TypeScript on the Astro framework. Cloudflare introduced it as a <a href="https://blog.cloudflare.com/emdash-wordpress/" rel="noopener" target="_blank">spiritual successor to WordPress</a>, and <a href="https://blog.cloudflare.com/emdash-cms-plugin-registry" rel="noopener" target="_blank">version 1.0 marked its first stable release</a>.</p>
<p>This article compares EmDash with WordPress based on the kind of site you are building and who will edit it. I have read up on EmDash and watched demos. Some of it does not impress me yet, but the project is early. We like many of Cloudflare&#8217;s products and value what the company does for the web. For our own sites, we would start with a pilot before committing to a migration.</p>
<h2>What EmDash Is And Who Is Behind It</h2>
<p>Cloudflare stewards EmDash under the MIT license, while WordPress uses GPLv2 or later. Cloudflare&#8217;s launch post says that no WordPress code went into it and that AI agents built much of it over two months. EmDash maintainer Matt Kane is also an Astro core maintainer. The Astro Technology Company team also joined Cloudflare.</p>
<p>An EmDash site can run on Cloudflare Workers with D1 and R2, or on a supported Node.js host with SQLite, libSQL, or PostgreSQL. The current <a href="https://docs.emdashcms.com/deployment/nodejs/" rel="noopener" target="_blank">Node.js deployment guide</a> requires version 22.23.4 or newer; 22.16.0 is sufficient for Astro 7.3 or earlier. The admin has five roles: Admin, Editor, Author, Contributor, and Subscriber. Passkeys are the default login method. Its sidebar groups content with tools for menus, redirects, widgets, content types, plugins, and imports.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321608" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-admin-dashboard-with-its-sidebar.png" alt="The EmDash admin dashboard with its sidebar" width="1440" height="900" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-admin-dashboard-with-its-sidebar.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-admin-dashboard-with-its-sidebar-300x188.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-admin-dashboard-with-its-sidebar-768x480.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-admin-dashboard-with-its-sidebar-610x381.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>Posts open in a TipTap editor and are stored as Portable Text, a JSON format for content. The editing screen keeps publishing and the slug in a sidebar beside the content. Bylines and categories live there too.</p>
<div id="attachment_321611" style="width: 1450px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-321611" class="with-border aligncenter size-full wp-image-321611" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-post-open-in-the-EmDash-editor-with-its-fields.png" alt="A post open in the EmDash editor with its fields" width="1440" height="900" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-post-open-in-the-EmDash-editor-with-its-fields.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-post-open-in-the-EmDash-editor-with-its-fields-300x188.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-post-open-in-the-EmDash-editor-with-its-fields-768x480.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-post-open-in-the-EmDash-editor-with-its-fields-610x381.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /><p id="caption-attachment-321611" class="wp-caption-text">TipTap is an open-source, headless editor framework. EmDash uses it for the Content field and saves what you write as Portable Text.</p></div>
<p>WordPress edits the same kind of post in its block editor, with post settings in its own sidebar.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321613" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/WordPress-7.1-block-editor.png" alt="WordPress 7.1 block editor" width="1440" height="1100" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/WordPress-7.1-block-editor.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/WordPress-7.1-block-editor-300x229.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/WordPress-7.1-block-editor-768x587.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/WordPress-7.1-block-editor-610x466.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>Themes are Astro projects built from routes, layouts, and components. They query content through the EmDash runtime; they are not sandboxed like registry plugins. This development model shapes what happens when you move a site, as the migration section explains.</p>
<h2>What EmDash Includes And What Still Needs Planning</h2>
<p>EmDash 1.0 established a stable release, and later versions have expanded it. Its current features include:</p>
<ul>
<li>Collections with 17 built-in field types, including reference fields that link entries and repeater fields for structured rows.</li>
<li>Sandboxed plugins on Cloudflare Workers and on Node.js.</li>
<li>A WordPress import that takes either a WXR file or the output of an exporter plugin installed on the live site.</li>
<li>A built-in MCP server, a command-line tool, and Agent Skills for building, upgrading, and porting sites and plugins.</li>
<li>Optional per-request payments through the separate x402 integration.</li>
</ul>
<p>Compared with WordPress, the <a href="https://plugins.emdashcms.com/search" rel="noopener" target="_blank">official registry</a> offers a much smaller selection of plugins. Cloudflare&#8217;s 1.0 announcement described paid registry support as a future goal. EmDash uses Astro templates rather than WordPress-style theme switching, and third-party themes are available. Its <a href="https://docs.emdashcms.com/guides/blocks/" rel="noopener" target="_blank">block composition system</a> lets editors add and reorder developer-defined sections, but it is not a general-purpose visual <a href="https://www.elegantthemes.com/blog/wordpress/what-is-a-page-builder">page builder</a> like Divi.</p>
<p>The registry&#8217;s home page lists each plugin with its author, its version, and its license with tags.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321607" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins.png" alt="The EmDash plugin registry showing recently updated plugins" width="1440" height="1800" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins-240x300.png 240w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins-768x960.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins-1229x1536.png 1229w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-plugin-registry-showing-recently-updated-plugins-610x763.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>Cloudflare <a href="https://blog.cloudflare.com/cloudflare-blog-uses-emdash" rel="noopener" target="_blank">moved its own blog to EmDash</a>. Its migration write-up describes gaps the team addressed around media, search, bylines, localization, SEO, and editor usability. Scheduled publishing arrived in version 0.19.0; it is supported in current releases.</p>
<h2>Plugin Security On Each Side</h2>
<p>Plugin isolation is a central part of EmDash&#8217;s design. Each sandboxed plugin runs with the capabilities it declares and the administrator approves. On Cloudflare, it runs in a Dynamic Worker; on Node.js, a separate workerd process provides isolation. Cloudflare deployments need the Workers Paid plan for this sandbox. Native plugins run in the server process without that isolation. Approved permissions still allow real changes, so sandboxing does not remove the need to trust a plugin&#8217;s publisher.</p>
<p>WordPress&#8217;s plugin risk is measurable. Patchstack&#8217;s <a href="https://patchstack.com/whitepaper/state-of-wordpress-security-in-2026/" rel="noopener" target="_blank">security report</a> counted 11,334 new vulnerabilities in the reporting period, a 42% increase over the previous period, with 91% in plugins, 9% in themes, and 6 in core. Of those, 46% were still unpatched at disclosure.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321614" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found.png" alt="Where WordPress vulnerabilities were found" width="1800" height="729" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found.png 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found-300x122.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found-768x311.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found-1536x622.png 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Where-the-2025-WordPress-vulnerabilities-were-found-610x247.png 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>I vet every plugin before it goes on a site. I keep a closed repertoire, the same short list on all my sites, and I use Patchstack where I can. Vulnerabilities are increasing, at least in the number being found. I think I am not as exposed to them, because I have strong infrastructure around each site.</p>
<p>For WordPress, use a maintained set of plugins from trusted sources, remove plugins you no longer need, and test updates on staging. Review security advisories and the developer&#8217;s response to them. Install counts and the date of the last update can inform that review, but neither proves that a plugin is secure.</p>
<p><a href="https://wordpress.org/plugins/patchstack/" rel="noopener" target="_blank">Patchstack&#8217;s plugin listing</a> describes free vulnerability alerts; active mitigation requires a paid plan. Its <a href="https://docs.patchstack.com/getting-started/pricing-plans/" rel="noopener" target="_blank">Developer plan</a> is listed at $69 per month for 25 sites when billed annually. Check current plan terms before budgeting.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321610" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site.png" alt="How a WordPress plugin and a sandboxed EmDash plugin reach the site" width="1800" height="918" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site.png 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site-300x153.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site-768x392.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site-1536x783.png 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-a-WordPress-plugin-and-a-sandboxed-EmDash-plugin-reach-the-site-610x311.png 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The sandbox only helps when the required plugin can operate within it. WordPress has a far larger plugin ecosystem, but a small vetted list does not provide runtime isolation. Vetting, timely updates, backups, and monitoring manage risk; they do not eliminate it.</p>
<h2>Building Structured Sites: Content Types, Fields, And Settings</h2>
<p>I build sites around options pages and custom post types with custom fields. Clients edit settings on the options pages and add new posts with a defined set of obvious fields. EmDash comes close in the second half. You create a collection in the admin under Content Types or with the command-line tool, and the schema is read from the database at runtime.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321617" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-fields-of-the-Posts-content-type-in-the-EmDash-schema-builder.png" alt="The fields of the Posts content type in the EmDash schema builder" width="1440" height="1300" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-fields-of-the-Posts-content-type-in-the-EmDash-schema-builder.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-fields-of-the-Posts-content-type-in-the-EmDash-schema-builder-300x271.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-fields-of-the-Posts-content-type-in-the-EmDash-schema-builder-768x693.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-fields-of-the-Posts-content-type-in-the-EmDash-schema-builder-610x551.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>The Add Field dialog lists all 17 field types. They include reference fields that link entries across collections and repeater fields that hold structured rows.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321618" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-field-types-EmDash-offers-when-adding-a-field-to-a-content-type.png" alt="The field types EmDash offers when adding a field to a content type" width="1440" height="1300" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-field-types-EmDash-offers-when-adding-a-field-to-a-content-type.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-field-types-EmDash-offers-when-adding-a-field-to-a-content-type-300x271.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-field-types-EmDash-offers-when-adding-a-field-to-a-content-type-768x693.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-field-types-EmDash-offers-when-adding-a-field-to-a-content-type-610x551.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>WordPress includes APIs for custom post types and post metadata in core. Code or plugins provide the editing interface. The free <a href="https://wordpress.org/plugins/secure-custom-fields/" rel="noopener" target="_blank">Secure Custom Fields</a> plugin can register post types and taxonomies as well as field groups, repeaters, and options pages.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321612" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-custom-post-type-edit-screen-with-custom-fields-in-WordPress-1.png" alt="A custom post type edit screen with custom fields in WordPress" width="1440" height="1250" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-custom-post-type-edit-screen-with-custom-fields-in-WordPress-1.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-custom-post-type-edit-screen-with-custom-fields-in-WordPress-1-300x260.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-custom-post-type-edit-screen-with-custom-fields-in-WordPress-1-768x667.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/A-custom-post-type-edit-screen-with-custom-fields-in-WordPress-1-610x530.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>Site-wide options need a different setup. EmDash&#8217;s built-in Settings screens cover site identity, social profiles, and SEO defaults. Custom client controls can be implemented through <a href="https://docs.emdashcms.com/plugins/creating-plugins/settings/" rel="noopener" target="_blank">plugin settings and admin pages</a>. That makes a phone number, booking link, or banner toggle possible, but it requires development and template integration rather than an options-page workflow already configured in a fields plugin.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321609" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-Settings-screen-with-its-fixed-list-of-options.png" alt="The EmDash Settings screen with its fixed list of options" width="1440" height="1300" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-Settings-screen-with-its-fixed-list-of-options.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-Settings-screen-with-its-fixed-list-of-options-300x271.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-Settings-screen-with-its-fixed-list-of-options-768x693.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-EmDash-Settings-screen-with-its-fixed-list-of-options-610x551.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>On WordPress, an options page comes from a fields plugin, and the client edits it in the same admin as everything else.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321595" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/An-options-page-in-the-WordPress-admin.png" alt="An options page in the WordPress admin" width="1440" height="1274" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/An-options-page-in-the-WordPress-admin.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/An-options-page-in-the-WordPress-admin-300x265.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/An-options-page-in-the-WordPress-admin-768x679.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/An-options-page-in-the-WordPress-admin-610x540.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>A phone number, a booking link, and a banner toggle all live on that one screen.</p>
<h2>Routine WordPress Features That Need Rethinking On EmDash</h2>
<p>Some WordPress features are routine because a plugin covers them in minutes. EmDash builds several into core. It covers an SEO panel with sitemaps, redirects with a 404 log, comments, and menus. Full-text search, multilingual content management, scheduling, and revisions are also supported. Multilingual content management does not mean that the CMS automatically translates the site. Forms and stores are where the routine changes, and so are email and premium add-ons.</p>
<p>Forms illustrate the difference in setup. EmDash has form plugins, but check each one&#8217;s rendering instructions: some require a companion package in the Astro project and an initial build and deployment. Installing a registry plugin alone does not necessarily put a form on the public page. On WordPress.org, Contact Form 7 lists 10+ million active installations, and WPForms Lite lists 5+ million. Forms can be placed through the supported block or shortcode. A builder such as <a href="https://www.elegantthemes.com/join/">Divi</a> also provides a <a href="https://www.elegantthemes.com/blog/theme-releases/four-new-modules-for-divi-5-charts-gravity-forms-imagely-payment-button">Gravity Forms module</a> when that plugin is installed.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/08/styling-inputs-in-the-Gravity-Forms-module.mp4" /></video></p>
<p>EmDash commerce is developing too. Urumi now offers <a href="https://otta.sh/" rel="noopener" target="_blank">Otta</a>, an open-source commerce layer for EmDash. Before choosing it, verify the payment, shipping, tax, and integration requirements of the particular store. WordPress&#8217;s WooCommerce has a much longer-established ecosystem and lists 7+ million active installations. Divi adds <a href="https://www.elegantthemes.com/integrations/woocommerce-modules/">WooCommerce modules</a> for building product and store layouts.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/05/woo-billing.mp4" /></video></p>
<p>The separate <a href="https://docs.emdashcms.com/guides/x402-payments/" rel="noopener" target="_blank">x402 package</a> can charge for access to a resource through HTTP payment requests. It is not a shopping cart and should be evaluated separately from Otta or WooCommerce.</p>
<h3>Visual Editing, Email, And The Rest</h3>
<p>The distinction is between editing content and designing layouts. EmDash supports inline editing on the page, and editors can compose predefined blocks or select layouts when a developer has configured them. New layouts and styling still involve Astro development. On WordPress, <a href="https://www.elegantthemes.com/no-code-design/">Divi&#8217;s Visual Builder</a> gives clients visual controls for designing the page itself.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-Post-Filter-module.mp4" /></video></p>
<p>Email needs a provider plugin in production. Without one, invites must be copied by hand. For paid add-ons, check the vendor&#8217;s licensing, update, and support terms separately; a free registry listing does not establish those services.</p>
<h2>Moving A WordPress Site To EmDash</h2>
<p>The <a href="https://docs.emdashcms.com/migration/from-wordpress/" rel="noopener" target="_blank">WordPress import screen</a> accepts a WXR export file, an EmDash Exporter migration key, or a site URL. The URL route still needs the exporter for an authenticated import; without it, EmDash only probes the public REST API. WXR imports use the data present in the export, and attachment URLs must remain accessible so media can be copied. The exporter can bring supported custom meta and SEO fields; comments, menus, the logo, and favicon require exporter 1.2.0 or later. Review field mappings and references rather than assuming a complete one-to-one conversion.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321606" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-WordPress-import-screen-in-the-EmDash-admin.png" alt="The WordPress import screen in the EmDash admin" width="1440" height="1000" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-WordPress-import-screen-in-the-EmDash-admin.png 1440w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-WordPress-import-screen-in-the-EmDash-admin-300x208.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-WordPress-import-screen-in-the-EmDash-admin-768x533.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/The-WordPress-import-screen-in-the-EmDash-admin-610x424.png 610w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>
<p>Themes are not imported. You port them by hand, and the migration docs tell you to check shortcodes, page-builder markup, and plugin-defined blocks after the import. A site built with a page builder moves as content, and its layouts are rebuilt as Astro pages.</p>
<p><img loading="lazy" decoding="async" class="with-border aligncenter size-full wp-image-321616" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt.png" alt="What moves from WordPress to EmDash and what gets rebuilt" width="1800" height="873" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt.png 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt-300x146.png 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt-768x372.png 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt-1536x745.png 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/What-moves-from-WordPress-to-EmDash-and-what-gets-rebuilt-610x296.png 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Current imports use bounded chunks, but a successful import still needs verification. Compare content counts, review representative pages, check media and authors, and test redirects and any imported settings. EmDash&#8217;s theme- and plugin-porting Agent Skills can help with the rebuild; they do not make WordPress plugins or layouts directly compatible.</p>
<h2>AI Agents On Each Side</h2>
<p>AI has made me far more productive on WordPress. EmDash treats agents as a first-class user, with an MCP server built in at /_emdash/api/mcp. It authenticates with OAuth 2.1 or personal access tokens and never grants more than the user&#8217;s role. Its tools cover content, schemas, media, taxonomies, menus, revisions, and settings, and plugins can expose additional MCP tools.</p>
<p>WordPress builds the pieces in core. The Abilities API arrived in version 6.9 and lets core register what it can do in a machine-readable form, and plugins and themes can do the same. Version 7.0 added the AI Client, a PHP API for plugins, with providers supplied by official plugins from Anthropic, Google, and OpenAI. The official <a href="https://developer.wordpress.org/news/2026/02/from-abilities-to-ai-agents-introducing-the-wordpress-mcp-adapter/" rel="noopener" target="_blank">MCP Adapter</a> exposes appropriately registered abilities to compatible clients such as Claude Code. It ships separately from core and does not automatically give an agent access to every WordPress operation. AI Engine, which <a href="https://www.elegantthemes.com/blog/wordpress/ai-engine-review">we reviewed</a>, is another route to a WordPress MCP server. Builders add agents of their own, too. <a href="https://www.elegantthemes.com/ai-agent/">Divi AI Agents</a> works inside the Visual Builder, where you describe a change in plain language and it adds and edits modules and creates pages.</p>
<p>EmDash includes an agent interface that covers its whole content model. On WordPress, what an agent can do depends on the abilities that core and your plugins register.</p>
<h2>What Each Costs To Run</h2>
<p>WordPress runs on hosts that meet its <a href="https://wordpress.org/about/requirements/" rel="noopener" target="_blank">PHP, database, and HTTPS requirements</a>, potentially including one a client already uses. Both WordPress and EmDash are free, open-source software; hosting, development, maintenance, and selected services determine the total cost.</p>
<p>EmDash can run on Node.js hosting. On Cloudflare, sandboxed plugins require Workers Paid, which starts at $5 per month. That is a platform minimum, not a guaranteed complete site bill: usage, database, storage, and other services may add costs. <a href="https://wpmudev.com/emdash-hosting/" rel="noopener" target="_blank">WPMU DEV</a> also offers managed EmDash hosting; its entry server is advertised at $30 per month, or $15 for Premium Pro members. Check membership costs and current terms when comparing the offers.</p>
<p>On WordPress, budget for hosting and the paid plugins or monitoring you select. On either platform, include the cost of ongoing development and support, especially if the client cannot maintain the stack.</p>
<h2>Early Reactions Worth Weighing</h2>
<p>Early reactions concerned the initial preview. Matt Mullenweg, WordPress&#8217;s co-founder, called the product <a href="https://ma.tt/2026/04/emdash-feedback/" rel="noopener" target="_blank">&#8220;very solid&#8221;</a> with &#8220;excellent engineering.&#8221; He called Agent Skills &#8220;a brilliant strategy&#8221; and said WordPress needs &#8220;to do the same.&#8221; His objection was that the plugin sandbox &#8220;only works on Cloudflare.&#8221; That comment concerned the launch preview; current EmDash also supports sandboxing through workerd on Node.js.</p>
<p>Yoast founder <a href="https://joost.blog/emdash-cms/" rel="noopener" target="_blank">Joost de Valk</a> welcomed the agent-oriented design while warning that rapid AI-assisted development is not a substitute for production experience. His reaction is useful context, but it predates the stable release and subsequent improvements.</p>
<h2>Which One To Pick For Your Next Site</h2>
<p>The right pick depends on the job the site has to do and who will edit it.</p>
<p>For a site that depends on established plugins, visual page design, or a client editing workflow you already support, WordPress is usually the more practical starting point. Custom fields alone do not decide the comparison: both systems support structured content. A content site maintained by a TypeScript developer who already works with Astro is a stronger case for an EmDash pilot. Confirm required integrations and editing controls before committing.</p>
<h2>Where To Go From Here</h2>
<p>I have concerns and questions about moving any of my sites to EmDash. It seems exciting, but I have invested heavily in the WordPress plugin and theme ecosystem and established SOPs, and I have seen large gains in productivity from AI. I still see so much untapped potential in WordPress, even with its quirks, that switching is hard to justify.</p>
<p>If you are staying on WordPress, the next step is a short list of vetted plugins and monitoring you trust. Our guide to <a href="https://www.elegantthemes.com/blog/wordpress/best-wordpress-ai-plugins">WordPress AI plugins</a> covers the agent side. If you are curious about EmDash, try the <a href="https://try.emdashcms.com/" rel="noopener" target="_blank">public playground</a> or a small pilot site before you plan a migration. For the bigger picture, see <a href="https://www.elegantthemes.com/blog/wordpress/is-ai-going-to-kill-wordpress">Is AI Going To Kill WordPress?</a></p>
<p>For a visual WordPress workflow, explore <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> and see how its builder fits the way you and your clients want to work.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/wordpress/wordpress-vs-emdash">WordPress vs EmDash (2026): Which Fits Your Next Site?</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/wordpress/wordpress-vs-emdash/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/wordpress-vs-emdash-ft-img-3.jpeg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>Comparing And Optimizing The Cost of Divi AI Agents</title>
		<link>https://www.elegantthemes.com/blog/business/comparing-and-optimizing-the-cost-of-divi-ai-agents</link>
					<comments>https://www.elegantthemes.com/blog/business/comparing-and-optimizing-the-cost-of-divi-ai-agents#respond</comments>
		
		<dc:creator><![CDATA[Deanna McLean]]></dc:creator>
		<pubDate>Mon, 09 Nov 2026 16:00:00 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<category><![CDATA[Divi AI Agents]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=321920</guid>

					<description><![CDATA[<p>AI is changing the way we build websites. Instead of manually editing every module or building layouts from scratch, you can describe what you want and let an AI agent handle the work. But not every task requires the same level of AI processing power, and choosing the wrong model can mean spending more than [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/business/comparing-and-optimizing-the-cost-of-divi-ai-agents">Comparing And Optimizing The Cost of Divi AI Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>AI is changing the way we build websites. Instead of manually editing every module or building layouts from scratch, you can describe what you want and let an AI agent handle the work. But not every task requires the same level of AI processing power, and choosing the wrong model can mean spending more than necessary.</p>
<p><a href="https://www.elegantthemes.com/blog/theme-releases/ai-agent">Divi AI Agents</a> gives you access to hundreds of AI models inside the <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> Visual Builder. Whether you&#8217;re correcting a typo, creating a section, or building an entire page from a screenshot, you can choose a model that fits the job and your budget.</p>
<p>In this post, we&#8217;ll explain how Divi AI Agents pricing works, compare its model-selection options, and share practical ways to get the best results without overspending.</p>
<p>Let&#8217;s dive in.</p>
<h2>How Much Does Divi AI Agents Cost?</h2>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/exploring-divi-5s-ai-agents">Divi AI Agents</a> uses usage-based pricing. Rather than paying a fixed amount per task, you&#8217;re charged according to the AI processing required to complete your requests. Costs depend on the model selected, the amount of information processed, and the complexity of the work.</p>
<h3>Understanding AI Wallet And Usage-Based Pricing</h3>
<p>Every <a href="https://www.elegantthemes.com/ai/">Divi AI</a> subscription includes <strong>$5 in monthly AI Agent usage</strong> through the <strong>AI Wallet</strong>. This allowance resets on your subscription renewal date, and unused monthly funds don&#8217;t roll over.</p>
<p>Your AI Wallet is shared across websites associated with your Elegant Themes account. If you exhaust your included allowance, you can purchase additional funds to continue using the Agent.</p>
<p>Divi AI Agents connects to AI models through OpenRouter, which provides access to models from multiple AI companies. Providers set their own rates, and Elegant Themes adds a small percentage to cover transaction and business costs.</p>
<p>You can view your balance and add funds using the Wallet icon in the AI Agent chat window.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321940 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet.jpeg" alt="Divi 5 AI Wallet" width="1800" height="925" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-768x395.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-1536x789.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h2>What Determines The Cost Of Divi AI Agents?</h2>
<p>Several factors influence the cost of an Agent request. Understanding them makes it easier to balance model capabilities with your budget.</p>
<h3>AI Model Selection And Token Pricing</h3>
<p>AI models differ in capability, speed, and pricing. Some are economical choices for straightforward requests, while others offer advanced reasoning and problem-solving capabilities at higher rates.</p>
<p>Models process information in units called <strong>tokens:</strong> Input tokens include your instructions, relevant website content, and conversation context. Output tokens represent the information the model generates in response.</p>
<p>Input and output tokens can have different prices, with output generally costing more. Divi AI Agents displays estimated rates per one million input tokens and per one million output tokens. These rates include the Elegant Themes markup unless otherwise stated; they are not prices per request. A single request can involve multiple model calls.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321932 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated.jpg" alt="How Divi AI Agent Usage Is Calculated" width="1800" height="600" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated-300x100.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated-768x256.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated-1536x512.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/How-Divi-AI-Agent-Usage-Is-Calculated-610x203.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Task Complexity And Conversation Context</h3>
<p>Changing a button label typically requires less processing than recreating an entire page from a screenshot. Larger tasks may involve more context, more generated output, and multiple requests to the model.</p>
<p>Conversation history can also increase usage. As a conversation grows, previous messages may become part of the context for new requests.</p>
<p>Some models also support adjustable reasoning effort. Higher settings can help solve difficult problems but may increase processing time and cost.</p>
<p>The goal isn&#8217;t simply to choose the cheapest model. It&#8217;s to find one that can complete the task efficiently, without unnecessary retries or manual corrections.</p>
<h2>Comparing The Five Divi AI Agents Model Selection Options</h2>
<p>Divi AI Agents offers four automatic model-selection options, including <strong>Auto</strong> <strong>Deep Value</strong>, <strong>Auto Value</strong>, <strong>Auto Balanced</strong>, <strong>Auto Premium</strong>, and <strong>Custom</strong>, which lets you choose specific models.</p>
<p>Each option provides a different balance of cost and capability. The following graphic shows example pricing estimates captured when it was created. All amounts are per one million input or output tokens. Model choices and estimates can change, so check the current rates in your Builder before choosing:</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321929 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards.jpg" alt="Divi AI Agents model pricing comparison" width="1774" height="887" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards.jpg 1774w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards-300x150.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards-768x384.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards-1536x768.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Model-Pricing-Comparison-Cards-610x305.jpg 610w" sizes="auto, (max-width: 1774px) 100vw, 1774px" /></p>
<h3>Auto Deep Value</h3>
<p>In the example above, Auto Deep Value has the lowest displayed pricing among the automatic options: approximately $0.15 per million input tokens and $0.47 per million output tokens. It&#8217;s worth testing when keeping model costs low is a priority.</p>
<p>Despite its name, Auto Deep Value displays lower pricing than Auto Value. Compare the results of both options rather than assuming one is more expensive or capable based on its name.</p>
<h3>Auto Value</h3>
<p>The example shows Auto Value at approximately $0.35 per million input tokens and $1.94 per million output tokens. It&#8217;s a cost-conscious option to consider for everyday tasks such as rewriting content, updating buttons, and making minor design adjustments.</p>
<h3>Auto Balanced</h3>
<p>The example shows Auto Balanced at approximately $0.90 per million input tokens and $4.64 per million output tokens. It provides a middle ground between the Value options and Auto Premium, making it a useful starting point for creating sections, modifying multiple modules, and coordinating design changes.</p>
<h3>Auto Premium</h3>
<p>In the example, Auto Premium has the highest displayed pricing among the automatic options: approximately $2.00 per million input tokens and $11.79 per million output tokens.</p>
<p>It&#8217;s worth considering for demanding tasks such as recreating complex layouts, troubleshooting difficult design problems, or completing work that requires extensive reasoning. Although its rates are higher, stronger results may reduce the need for repeated attempts.</p>
<h3>Custom</h3>
<p>Custom gives you direct control over which AI models Divi AI Agents uses. Pricing depends on the specific models you select.</p>
<p>This option is useful for experienced users who want to experiment with models suited to coding, visual interpretation, content generation, or other specialized work. It also allows you to compare individual models rather than relying on automatic selection.</p>
<p>Ultimately, the best option depends on the job. A lower-priced model may handle simple work perfectly, while a more capable model may prove economical for difficult tasks by getting the result right sooner.</p>
<h2>Choosing The Right AI Model For Different Divi Tasks</h2>
<p>Divi AI Agents can handle everything from quick content edits to complete website builds. Matching the model to the task is one of the simplest ways to control costs.</p>
<h3>Simple Tasks: Content Edits And Minor Adjustments</h3>
<p>For rewriting headings, correcting spelling, updating button labels, or making basic styling changes, start by testing <strong>Auto Deep Value</strong> or <strong>Auto Value</strong>.</p>
<p>These tasks usually have a limited scope and may not require advanced reasoning. Add the target Heading module to the chat context before submitting this prompt so the Agent knows which heading to change:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Rewrite the heading to emphasize the benefits of our services. Keep it under 10 words and leave the rest of the section unchanged.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321941 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value.jpeg" alt="rewrite text with Auto Value" width="1800" height="926" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value-768x395.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value-1536x790.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/rewrite-text-with-Auto-Value-610x314.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Moderate Tasks: Building And Editing Website Sections</h3>
<p>Creating feature sections, adjusting responsive layouts, and modifying several modules require more coordination. <strong>Auto Balanced</strong> is a reasonable starting point for these jobs.</p>
<p>For example:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Create a three-column feature section below the hero section. Include an icon, heading, and description in each column. Use the page&#039;s existing colors and typography.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321942 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model.jpeg" alt="auto balanced model" width="1800" height="922" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model-1536x787.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/auto-balanced-model-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>However, Auto Balanced isn&#8217;t required. If a Value option consistently produces satisfactory results for similar tasks, there&#8217;s no reason to spend more.</p>
<h3>Complex Tasks: Full Page Builds And Troubleshooting</h3>
<p>Recreating a design from a screenshot, building an elaborate landing page, or troubleshooting a complicated responsive layout may benefit from <strong>Auto Premium</strong>.</p>
<p>These jobs can require the Agent to interpret visual references, understand existing page structures, plan multiple changes, and apply consistent styling.</p>
<p>Still, not every full-page build needs a premium model. A straightforward design may work well with Auto Balanced or a Value option. Evaluate the results before deciding whether additional processing power is necessary.</p>
<h3>Specialized Tasks: Using Custom Models</h3>
<p><strong>Custom</strong> is useful when you want to choose models with particular strengths. For example, you might compare models for custom CSS troubleshooting or test different models when creating layouts from visual references.</p>
<p>By comparing their results and actual usage costs, you can identify which models provide the best value for your workflow.</p>
<h3>Comparing Model Options By Task</h3>
<p>The following graphic summarizes suggested starting points for common Divi tasks.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321928 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks.jpg" alt="Suggested Divi AI Agents models for simple, moderate, complex, and specialized tasks" width="1800" height="900" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks-300x150.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks-768x384.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks-1536x768.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Choosing-the-Right-AI-Model-for-Divi-Tasks-610x305.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>These are recommendations, not strict rules. Different models can perform well on the same task. The objective is to find the least expensive option that consistently delivers acceptable results.</p>
<h2>How To Optimize Divi AI Agents Costs</h2>
<p>Model selection is only part of the equation. The way you write prompts, manage conversations, and use the Agent&#8217;s features can also affect your spending.</p>
<h3>Start With An Appropriate Model</h3>
<p>Choose a model based on the difficulty of the task rather than defaulting to Auto Premium. If a lower-priced option delivers satisfactory results, use it for similar work.</p>
<p>When a model struggles, consider switching to a more capable option instead of repeatedly submitting the same request. Multiple unsuccessful attempts can cost more than completing the job with a stronger model.</p>
<h3>Keep Your Prompts Specific And Focused</h3>
<p>Vague requests can lead to unnecessary changes and additional attempts. Add the target section to the chat context and make sure a primary color variable already exists before using this example:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Increase the heading size, reduce the space between headings, and change the background to the primary color variable. Keep the existing content and layout structure.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321951 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes.jpeg" alt="targeted AI Agent changes" width="1800" height="986" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes-300x164.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes-768x421.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes-1536x841.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/targeted-AI-Agent-changes-610x334.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Specific instructions help the Agent understand the desired outcome and avoid modifying unrelated elements. You can also reference particular modules or sections using the Agent&#8217;s context tools.</p>
<h3>Use Ask Mode When You Don&#8217;t Need Changes</h3>
<p>Divi AI Agents includes Ask and Build modes. Ask mode answers questions and examines your page without making changes. Build mode allows the Agent to create elements, update settings, and modify layouts.</p>
<p>Ask mode avoids actions that modify your website, but its model usage is still charged. The cost depends on the selected model and the context it processes.</p>
<p>If you need to understand a setting or diagnose an issue, consider starting in Ask mode. Once you know what needs changing, switch to Build mode with a focused instruction.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321943 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection.jpeg" alt="Divi AI Agent mode selection" width="1800" height="925" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection-768x395.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection-1536x789.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agent-mode-selection-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Start New Conversations For Unrelated Tasks</h3>
<p>Long conversations may consume additional tokens because earlier messages can be included in subsequent requests.</p>
<p>Keep related work together, but start a fresh conversation when moving to an unrelated task. This reduces unnecessary context and helps the Agent focus on the new request.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321952 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent.jpeg" alt="start new tasks with Divi AI Agent" width="1800" height="922" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent-1536x787.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/start-new-tasks-with-Divi-AI-Agent-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Save Repetitive Tasks As Commands</h3>
<p>Divi AI Agents lets you save reusable <strong>Commands</strong> for recurring workflows. These might include accessibility reviews, responsive design checks, content cleanup, or design consistency audits.</p>
<p>Commands help you reuse clear, consistent instructions instead of rewriting them each time, making repetitive work easier to manage.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321953 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents.jpeg" alt="using commands in Divi AI Agents" width="1800" height="989" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents-300x165.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents-768x422.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents-1536x844.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/using-commands-in-Divi-AI-Agents-610x335.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Monitor Your AI Wallet Usage</h3>
<p>Check your AI Wallet regularly, especially when experimenting with models or completing larger projects. Tracking usage helps you monitor your remaining allowance. Because the balance is shared across sites and may be rounded or delayed, a balance change alone is not an exact per-task cost measurement.</p>
<p>Remember that your wallet is shared across websites associated with your Elegant Themes account. If you&#8217;re working on client sites, account-wide usage is worth monitoring.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321940 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet.jpeg" alt="Divi 5 AI Wallet" width="1800" height="925" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-768x395.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-1536x789.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-5-AI-Wallet-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h2>Comparing The Cost Of Divi AI Agents</h2>
<p>The cheapest individual request isn&#8217;t always the most economical way to finish a task.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321933 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow.jpg" alt="Cost Per Request vs. Completed Task Flow" width="1800" height="600" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow-300x100.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow-768x256.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow-1536x512.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Cost-Per-Request-vs.-Completed-Task-Flow-610x203.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>A lower-priced model might require several attempts to produce an acceptable result, while a more capable model could complete the same job immediately. In that situation, the higher-priced model may cost less overall.</p>
<p>Your time matters, too. Repeated corrections, rewritten prompts, and manual adjustments add effort to the workflow.</p>
<p>When evaluating models, consider total usage, result quality, and the number of attempts needed to finish the job. That gives you a more meaningful comparison than model pricing alone.</p>
<h2>Get More Done With Divi AI Agents Without Overspending</h2>
<p><a href="https://www.elegantthemes.com/blog/theme-releases/ai-agent">Divi AI Agents</a> can help with everything from simple content updates to complex website-building projects. With four automatic model-selection options and Custom model configuration, you can choose the level of AI capability that suits your work.</p>
<p>Start with a cost-effective option, write focused prompts, and use more capable models when the task demands them. Most importantly, evaluate the cost of completing a job successfully rather than focusing only on individual request prices.</p>
<p>Ready to experiment? <a href="https://www.elegantthemes.com/blog/divi-resources/exploring-divi-5s-ai-agents">Explore Divi AI Agents</a> and use your included $5 monthly allowance to discover which models work best for your website-building workflow.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/business/comparing-and-optimizing-the-cost-of-divi-ai-agents">Comparing And Optimizing The Cost of Divi AI Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/business/comparing-and-optimizing-the-cost-of-divi-ai-agents/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Comparing-And-Optimizing-The-Cost-of-Divi-AI-Agents-featured-image.jpg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>How To Create A Filterable Portfolio With Divi 5&#8217;s Loop Builder</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-filterable-portfolio-with-divi-5s-loop-builder</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-filterable-portfolio-with-divi-5s-loop-builder#respond</comments>
		
		<dc:creator><![CDATA[Deanna McLean]]></dc:creator>
		<pubDate>Sun, 08 Nov 2026 16:00:00 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<category><![CDATA[Loop Builder]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=320966</guid>

					<description><![CDATA[<p>A portfolio that only shows thumbnails is easy to ignore. Clients and prospects want to see proof, including engagement stats. That means your project grid has to do more than look like a gallery. People should be able to search by client, narrow the work by service or industry, and see the stats that make [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-filterable-portfolio-with-divi-5s-loop-builder">How To Create A Filterable Portfolio With Divi 5&#8217;s Loop Builder</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A portfolio that only shows thumbnails is easy to ignore. Clients and prospects want to see proof, including engagement stats. That means your project grid has to do more than look like a gallery. People should be able to search by client, narrow the work by service or industry, and see the stats that make the Project worth showing.</p>
<p>Divi&#8217;s legacy Filterable Portfolio module can filter Projects by category. For a custom card layout, a search field, service and industry filters, and stored project metrics, we can use <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>&#8216;s <a href="https://www.elegantthemes.com/blog/theme-releases/loop-builder">Loop Builder</a>. It turns any layout you design into a repeating Projects feed. <a href="https://www.elegantthemes.com/blog/theme-releases/loop-filter-modules">Loop Filter modules</a> sit next to that feed and let visitors refine it. <a href="https://www.elegantthemes.com/blog/theme-releases/flexbox">Flexbox</a> handles the structure, and <a href="https://www.elegantthemes.com/integrations/advanced-custom-fields/">Advanced Custom Fields (ACF)</a> supplies the numbers and labels that make each card a case study instead of a screenshot.</p>
<p>In this post, we&#8217;ll walk you through creating the necessary custom fields for the portfolio, building the Loop, and configuring the Loop filters.</p>
<p>Let&#8217;s dive in.</p>
<h2>What Is The Loop Builder?</h2>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-divi-5s-loop-builder">Loop Builder</a> is Divi 5&#8217;s way of turning any layout you design into a repeating feed. You are not stuck with the structure of a Blog or Portfolio module. You build one item with Divi modules, connect it to a query, and Divi outputs that item once for every matching result.</p>
<h3>What It Can Loop</h3>
<p>A loop is not limited to blog posts. It can pull from posts and custom post types, including Divi&#8217;s built-in Projects post type.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321063 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop.jpeg" alt="projects loop" width="1800" height="909" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop-300x152.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop-768x388.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop-1536x776.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-loop-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>You can also loop terms such as categories, tags, and custom taxonomies, as well as users and ACF repeater fields. The Repeater field requires ACF PRO; the fields used in this tutorial are available in the free version. In practice, that means the same feature can power a blog grid, a project archive, a team directory, or a list built from repeater data. You choose the source when you enable the Loop.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321065 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types.jpg" alt="loop builder post types" width="1800" height="905" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types-300x151.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types-768x386.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types-1536x772.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-post-types-610x307.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>How It Works</h3>
<p>The workflow stays the same no matter what you&#8217;re querying.</p>
<p>Design a single item first. Enable Loop on the element that should repeat, usually a column or a group. Set the query type, post type, terms, order, posts per page, and a meta query if you need one. Then swap static text and images for Dynamic Content, such as Loop Post Title, Loop Featured Image, and any other available tags. Divi renders that template once for every item the query returns.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-builder-settings.mp4" /></video></p>
<p>You do not need a special content module or custom CSS to make that work. A featured image can be a background, and a title can sit on top of it. A custom field can be a heading, a label, or a number. If you can design the item once, you can loop it.</p>
<p>Give the Loop an <em>Element label</em> while you are there. Filters, pagination, and anything else that has to talk to this Loop will target it by that name.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321066 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label.jpeg" alt="loop element label" width="1800" height="907" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label-1536x774.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-element-label-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Loop Builder handles the default results and how each result looks. It does not add search, taxonomy controls, or sorting for visitors. That is what the Loop Filter modules are for. They sit outside the Loop, target it by label, and refine the query as people use the form.</p>
<h2>What Are The Loop Filter Modules?</h2>
<p><a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-should-know-about-the-loop-filter-modules-in-divi-5">Loop Filter modules</a> give visitors a way to search, narrow, and reorder a Loop Builder feed without leaving the page. They do not design the repeating item or decide what the Loop is querying. They refine an existing query.</p>
<p>That split is the entire point. Loop Builder owns the results and the template. Filters own the front-end controls.</p>
<h3>How The Two Modules Work</h3>
<p>The system is a parent and its items. A Post Filter module is the form. You place it on the page and point it at one Loop by Element Label.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321067 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target.jpeg" alt="Post Filter target" width="1800" height="908" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target-1536x775.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-target-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>In that form, each Post Filter Item is a single control: a text field, a radio list, a dropdown, a checkbox group, a sort option, an apply button, or a reset button.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321068 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items.jpeg" alt="post filter items" width="1800" height="904" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items-1536x771.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-items-610x306.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The field type controls the interface. Text becomes a search box. Radio and Select expose a list of values, either as a visible set of choices or as a compact menu. A checkbox allows multiple values at a time. Order By and Order change how the existing results are sorted. Submit and Reset apply or clear the form, depending on whether you want filters to run as soon as they change.</p>
<h3>How A Filter Connects To Data</h3>
<p>Each Post Filter Item is configured in the Content tab under the field, with four settings that do all the work.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321070 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields.jpeg" alt="post filter item fields in Divi 5" width="1800" height="906" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields-1536x773.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/post-filter-item-fields-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p><em>Field Label</em> is what visitors see above the control. It does not query anything and only gives a label to it.</p>
<p><em>Field Type</em> is the interface, and the menu is grouped by behavior. Text creates a search input. Single Selection includes Select and Radio, both of which pick one value, either from a dropdown or from a visible list. Multi Selection is a checkbox that lets visitors select more than one value. Sort includes Order By, Order, and Multiple Order, which control how the Loop is ordered. Buttons include Apply and Reset, which apply to the form or clear it. The Field Type only decides how the control looks and behaves. It has not yet chosen the data.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321071 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type.jpeg" alt="post filter item field type" width="1800" height="905" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type-1536x772.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Post-Filter-Item-field-type-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p><em>Field Value Type</em> tells Divi how to interpret the stored value when the field is querying data. The options are Text, Number, Date, Date Time, and Time. Leave this on Text for titles, taxonomies, and most labels. Switch it when the value is actually a number or a date, so comparisons work correctly.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321072 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type.jpeg" alt="field value type" width="1800" height="906" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type-1536x773.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-value-type-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p><em>Field Option</em> is the connection to WordPress. It tells the item which piece of data to query. What appears in that menu depends on the Field Type, the target loop, and the data attached to those posts. You might connect it to a taxonomy such as Category, Tag, or Project Category, to an author, to standard post data, or to a custom field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321073 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values.jpeg" alt="field option values" width="1800" height="902" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values-300x150.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values-768x385.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values-1536x770.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-option-values-610x306.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Once those settings are in place, the item knows what to show, how to treat the value, and which data to query.</p>
<h2>How To Create A Filterable Portfolio</h2>
<p>Here&#8217;s where we put it all together. We&#8217;ll design a Flexbox section, build one card, turn that card into a loop, then connect a Post Filter form to it. The front end will allow visitors to search by client, narrow the grid by service or industry, and reorder the results.</p>
<p>By the end, you&#8217;ll have a fully functional Project loop that you can drop into your next Divi 5 project.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321095 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5.jpeg" alt="filterable portfolio with Divi 5" width="1800" height="1393" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5-300x232.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5-768x594.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5-1536x1189.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/filterable-portfolio-with-Divi-5-610x472.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Plan The Content First</h3>
<p>Before opening the Visual Builder, ensure that you have created the necessary Project Categories for the Loop. These will serve as the Loop&#8217;s <em>Service</em> field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321096 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories.jpeg" alt="Divi 5 project categories" width="1800" height="873" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories-300x146.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories-768x372.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories-1536x745.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-categories-610x296.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>We&#8217;ll use ACF in the next step to create the <em>Industry</em> select field and the data displayed on the individual cards.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321097 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields.jpeg" alt="individual text fields" width="1800" height="906" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields-1536x773.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/individaul-text-fields-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Set Up Taxonomies And ACF Fields</h3>
<p>Create the terms before you design anything. Ensure that you have installed the free version of ACF and head to the <em>Field Groups</em> tab. Create a new <em>Field Group</em> and title it <em>Projects</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321098 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group.jpg" alt="add project field group" width="1800" height="874" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group-300x146.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group-768x373.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group-1536x746.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-project-field-group-610x296.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Before creating any fields, ensure that the field group&#8217;s location rule is set to <em>Post Type</em> <em>is equal to</em> <em>Project</em> in the <em>Settings</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321101 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type.jpeg" alt="project post type" width="1800" height="874" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type-300x146.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type-768x373.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type-1536x746.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/project-post-type-610x296.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Next, we&#8217;ll need to add three new custom fields: industry, percentage growth, and growth metric. For industry, choose <em>Select</em> as the <em>Field Type</em>, use <em>industry</em> as the <em>Field Name</em>, and assign values in the <em>Choices</em> field. Keep it as a single selection.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321102 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field.jpeg" alt="industry custom field" width="1800" height="874" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field-300x146.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field-768x373.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field-1536x746.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-custom-field-610x296.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The final two fields should be set to <em>Text</em> as the <em>Field Type</em>. Use <em>percentage_growth</em> and <em>growth_metric</em> as their Field Names. These store the metric and its label; they do not calculate or update analytics automatically.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321103 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields.jpeg" alt="text custom fields" width="1800" height="872" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields-300x145.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields-768x372.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields-1536x744.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/text-custom-fields-610x296.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Once all custom fields are created, click <em>Save Changes</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321104 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group.jpeg" alt="save field group" width="1800" height="859" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group-300x143.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group-768x367.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group-1536x733.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-field-group-610x291.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Create The Projects And Theme Builder Template</h3>
<p>With our custom fields and Field Group created, we can start adding projects. Ensure that each Project has a <em>Title</em>, <em>Featured Image</em>, an assigned <em>Category</em>, and all <em>custom fields</em> filled out with your information. Once complete, click <em>Publish</em> so the Project appears in the public Loop. Create more than six Projects if you want to test pagination.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone size-full wp-image-321106" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project.jpeg" alt="create Divi Project" width="1800" height="874" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project-300x146.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project-768x373.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project-1536x746.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-Divi-Project-610x296.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>We won&#8217;t cover creating a Project template for this tutorial, but to make things easier on yourself, we recommend creating a Project template with the <a href="https://www.elegantthemes.com/theme-builder/">Theme Builder</a>. This is what the visitor will see when they click on a Project in the grid. Go to <em>Divi &gt; Theme Builder</em>, click <em>+ Add New Template</em>, and when the modal appears, assign the template to <em>All Projects</em>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/create-a-project-template.mp4" /></video></p>
<p>Next, click on <em>Add Custom Body</em>, then <em>Build Custom Body</em> to open the Visual Builder.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/build-a-project-template.mp4" /></video></p>
<p>You can use Divi 5&#8217;s full suite of modules to build the template and assign <em>Dynamic Content</em> where necessary, like Post Title, your custom fields, and the Featured Image.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321109 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields.jpeg" alt="template custom fields" width="1800" height="908" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields-1536x775.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/template-custom-fields-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Once finished designing the template, click <em>Save</em> in the top right corner of the Builder.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321110 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template.jpeg" alt="save theme builder template" width="1800" height="907" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template-1536x774.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/save-theme-builder-template-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Build The Portfolio Section With Flexbox</h3>
<p>With all data and the Theme Builder template in place, we can start building the structure that will house our loop and post filter form. Create a new page and open the Visual Builder. Add a <em>1/4 + 3/4 Flex Row</em> to the section.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321112 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row.jpg" alt="add a new row to Divi" width="1800" height="883" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row-300x147.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row-768x377.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row-1536x753.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-new-row-610x299.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>In the Row&#8217;s <em>Design</em> tab, expand the Layout option group and assign <em>20px</em> to the <em>Horizontal and Vertical Gap</em> fields.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321115 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap.jpeg" alt="set horizontal and vertical gap" width="1800" height="901" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap-300x150.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap-768x384.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap-1536x769.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/set-horizontal-and-vertical-gap-610x305.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Click into the <em>1/4 Column</em>, expand the <em>Background</em> option group, and assign a <em>Background Color</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321116 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background.jpeg" alt="first column background" width="1800" height="840" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background-300x140.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background-768x358.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background-1536x717.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-column-background-610x285.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>In the <em>Design</em> tab, expand the <em>Spacing</em> group and assign <em>20px Padding</em> to all four sides. Then, add a <em>10px Border Radius</em>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/spacing-and-border-styles.mp4" /></video></p>
<p>In the <em>2nd Column (3/4)</em>, click the <em>black + icon</em> and add a single-column <a href="https://www.elegantthemes.com/blog/theme-releases/nested-rows"><em>Nested Row</em></a>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-nested-row.mp4" /></video></p>
<p>Click the <em>Nested Row</em> to edit it. Navigate to the <em>Design</em> tab, expand the <em>Layout</em> group, and add <em>10px Horizontal and Vertical Gap</em>. Then, enable <em>Layout Wrapping</em> to <em>Wrap</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321127 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure.jpeg" alt="nested row structure" width="1800" height="855" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure-300x143.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure-768x365.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure-1536x730.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-row-structure-610x290.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Now, click into the Nested Row&#8217;s <em>single Column</em>. Expand the <em>Meta</em> group in the <em>Content</em> tab and assign an <em>Element Label</em>, such as Projects Loop. This will allow you to easily assign the Target Loop to the Post Filter module in the next steps.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321129 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label.jpeg" alt="assign element label" width="1800" height="726" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label-300x121.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label-768x310.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label-1536x620.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-element-label-610x246.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>In the <em>Design</em> tab, expand the <em>Layout</em> group and set <em>Justify Content</em> to <em>Space Between</em>. Set the repeated Column&#8217;s <em>Layout Wrapping</em> to <em>No Wrap</em>, keeping <em>Wrap</em> on the parent Nested Row only. This prevents the lower card content from flowing outside the card.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321130 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings.jpeg" alt="column layout settings" width="1800" height="904" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings-1536x771.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-layout-settings-610x306.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Expand the <em>Sizing</em> group and set the <em>Column Class</em> to <em>1/2</em> and the <em>Aspect Ratio</em> to <em>3:2</em>. Add a <em>260px Min Height</em> to give the content enough room on narrower screens.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321131 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing.jpeg" alt="loop column sizing" width="1800" height="908" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing-1536x775.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-column-sizing-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Add <em>20px Padding</em> to <em>all four sides</em> in the <em>Spacing</em> group, and <em>10px Border Radius</em> in the <em>Border</em> group.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone size-full wp-image-321132" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles.jpeg" alt="column spacing and border styles" width="1800" height="741" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles-300x124.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles-768x316.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles-1536x632.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/column-spacing-and-border-styles-610x251.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Build The Loop Card</h3>
<p>With the structure in place, we can build the first loop card. We won&#8217;t go through a full design here, but there are a few important modules to add to the Nested Row&#8217;s Column.</p>
<p>Start by adding a <em>Module Group</em> with a <em>Text</em> module for the service badge and a <em>Heading</em> module for the metric to the repeated Column. In the Module Group&#8217;s <em>Design</em> tab, expand the <em>Layout</em> group and set <em>Layout Direction</em> to <em>Row</em>, <em>Justify Content</em> to <em>Space Between</em>, and <em>Align Items</em> to <em>Center</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321138 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings.jpg" alt="first group layout settings" width="1800" height="905" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings-300x151.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings-768x386.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings-1536x772.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/first-group-layout-settings-610x307.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Use Divi 5&#8217;s Design settings to style the <em>first Text module</em>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-text-modules.mp4" /></video></p>
<p>For the <em>Heading module</em>, assign an <em>H4 tag</em> and style it. Then, expand the <em>Elements</em> group in the <em>Content</em> tab. We&#8217;ll add a <em><a href="https://www.elegantthemes.com/blog/theme-releases/nested-modules">Nested Module</a></em> (text) to the Heading for the metric&#8217;s label.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/adding-nested-modules-in-Divi-5.mp4" /></video></p>
<p>Once styled, head back to the <em>parent Heading module</em> and go to the <em>Design</em> tab. Adjust the <em>Vertical Gap</em> in the <em>Layout</em> option group to <em>5px</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321139 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap.jpeg" alt="nested module vertical gap" width="1800" height="854" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap-300x142.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap-768x364.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap-1536x729.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/nested-module-vertical-gap-610x289.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>We will add another <em>Module Group</em> to the Column similar to the first, with two Text modules for the Project title and industry. Set <em>Layout Direction</em> to <em>Row</em>, <em>Justify Content</em> to <em>Space Between</em>, and <em>Align Items</em> to <em>Center</em>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/second-group-module-settings.mp4" /></video></p>
<p>Style the last two Text modules as desired and save your progress.</p>
<h3>Enable The Loop Builder</h3>
<p>Go back to the <em>Column (Projects Loop)</em> using Divi 5&#8217;s <em>Breadcrumbs</em> feature and expand the <em>Loop</em> option group in the <em>Content</em> tab. Toggle <em>Loop Element</em> on.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/enable-loop-builder.mp4" /></video></p>
<p>Leave the <em>Query Type</em> set to <em>Post Type</em>, and in the <em>Post Type</em> field, select <em>Projects</em>. Remove <em>Posts</em> if it is also selected.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/projects-post-type.mp4" /></video></p>
<p>Scroll down to reveal the <em>Posts Per Page</em> field and enter <em>6</em>. Leave <em>Order By</em> on <em>Publish Date</em> and <em>Order</em> on <em>Descending</em> to show the newest Projects first.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321144 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page.jpeg" alt="set the number of posts per page in Divi 5" width="1800" height="907" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page-1536x774.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/posts-per-page-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Assign Dynamic Content</h3>
<p>With the Loop Builder enabled, we can assign Dynamic Content to each of our fields. Start at the Column level by navigating to the <em>Background</em> option group in the <em>Content</em> tab. Tab over to <em>Background Image</em>, hover over the <em>+ Add Background Image</em> field to reveal the <em>Insert Dynamic Content</em> icon.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321145 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon.jpg" alt="dynamic content icon" width="1800" height="862" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon-300x144.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon-768x368.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon-1536x736.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-icon-610x292.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Select <em>Loop Featured Image</em> from the available options.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321146 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image.jpg" alt="loop featured image" width="1800" height="906" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image-300x151.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image-768x387.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image-1536x773.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/loop-featured-image-610x307.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Then, tab over to the <em>Background Gradient</em> tab and apply a partially transparent gradient to the image so the text pops. Enable <em>Place Gradient Above Background Image</em> so the gradient appears over the featured image.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-a-background-gradient.mp4" /></video></p>
<p>Before leaving the Column settings, expand the <em>Link</em> option group, click the <em>Insert Dynamic Content</em> icon, and insert the <em>Loop Link</em> dynamic field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321148 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link.jpeg" alt="assign a loop link" width="1800" height="908" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link-1536x775.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/assign-a-loop-link-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Navigate through each module and assign Dynamic Content to the remaining fields. Clear any placeholder text before inserting the dynamic value. Connect the service badge to <em>Loop Post Terms</em> and set its <em>Taxonomy</em> to <em>Project Categories</em>. Connect the Project title to <em>Loop Post Title</em>.</p>
<p>For the ACF fields, use the <em>Insert Dynamic Content</em> icon in the metric Heading&#8217;s <em>Heading</em> field or the Text module&#8217;s <em>Body</em> field. Choose <em>Loop Post Custom Field</em>, then select <em>percentage_growth</em> for the metric, <em>growth_metric</em> for its nested label, and <em>industry</em> for the industry text. Apply the variable settings.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/linking-an-ACF-custom-field.mp4" /></video></p>
<p>Once all Dynamic Content is connected, your layout should look similar to the image below.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321154 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated.jpeg" alt="dynamic content populated" width="1800" height="907" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated-1536x774.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/dynamic-content-populated-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Add The Post Filter Module</h3>
<p>Start by adding a <em>Heading</em> and <em>Text</em> module to help the user understand what the form does.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321157 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content.jpeg" alt="add descriptive content" width="1800" height="904" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content-1536x771.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-descriptive-content-610x306.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Then, drop a <em>Post Filter</em> module into the left Column and set its <em>Target Loop</em> to the <em>Projects Loop</em> Column. Keep <em>Apply Mode</em> on <em>Submit</em> and <em>Relation</em> on <em>And</em> so the active Service and Industry filters work together.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-Post-Filter-module.mp4" /></video></p>
<p>The Post Filter module automatically adds four <em>Post Filter Items</em> when you add the module, including <em>Search</em>, <em>Category</em>, <em>Reset</em>, and <em>Apply</em>. For the form to work correctly, map each query field to the corresponding post data, taxonomy, or custom field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321164 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items.jpeg" alt="default post filter items" width="1800" height="907" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items-1536x774.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/default-post-filter-items-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>For <em>Search</em>, keep <em>Text</em> as the <em>Field Type</em> and confirm that <em>Field Value</em> is <em>Post Title and Content</em>. Set a <em>Field Label</em> and <em>Field Placeholder</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone size-full wp-image-321165" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item.jpeg" alt="search post filter item" width="1800" height="904" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item-1536x771.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/search-post-filter-item-610x306.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>For the <em>Category</em> field, swap the <em>Field Type</em> to <em>Checkbox</em> and select <em>Project Category</em> as the <em>Field Option</em>. Set the <em>Field Label</em> to <em>Service</em> after choosing the Field Option.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321168 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item.jpeg" alt="category post filter item" width="1800" height="906" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item-1536x773.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/category-post-filter-item-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>We need to add one more Post Filter Item for <em>Industry</em>. Click <em>+ Add Element</em> to add a new field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321170 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item.jpeg" alt="add new post filter item" width="1800" height="905" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item-768x386.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item-1536x772.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/add-new-post-filter-item-610x307.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>After adding the new field, click to edit it. Choose <em>Select</em> as the <em>Field Type</em> and the <em>industry</em> custom field as the <em>Field Option</em>, then set the <em>Field Label</em> to <em>Industry</em>. Keep <em>Field Value Type</em> on <em>Text</em>, <em>Field Comparison</em> on <em>Equals (=)</em>, and <em>Options Method</em> on <em>Automatic</em>. Add a <em>Field Placeholder</em> if desired.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321171 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item.jpeg" alt="industry post filter item" width="1800" height="908" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item-300x151.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item-768x387.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item-1536x775.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/industry-post-filter-item-610x308.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Now we need to reorder the field to be above the buttons, so click and hold the Industry Post Filter Item and drag it just below Project Category.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/rearrange-post-filter-items.mp4" /></video></p>
<p>To let visitors reorder the results, add another Post Filter Item with <em>Order</em> as its <em>Field Type</em> and place it before Reset and Apply. With the Loop ordered by Publish Date, <em>Ascending</em> shows older Projects first and <em>Descending</em> shows newer Projects first. <em>Order By</em> is a separate field type for choosing the sort key.</p>
<h4>Style The Form</h4>
<p>You can style the Post Filter module just like you would any other Divi 5 module. Although you can style individual Post Filter Items, it&#8217;s best to make styling changes at the parent element level. Go to the <em>Design</em> tab on the main <em>Post Filter</em> module. Here, you&#8217;ll find option groups for <em>Fields, Checkboxes, Radios, Multiple Order Buttons, Buttons</em>, and basic settings for <em>Sizing, Spacing</em>, etc.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321175 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab.jpeg" alt="main post filter design tab" width="1800" height="922" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab-1536x787.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/main-post-filter-design-tab-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Go through each option group to add styles to the form, starting with the <em>Field</em> option group. For this particular form, these settings control the <em>Search</em> and <em>Industry</em> fields. There are options for <em>Input, Label,</em> and <em>Placeholder Text</em>, along with <em>Background, Border</em>, and Box <em>Shadow</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321179 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options.jpeg" alt="field design options" width="1800" height="920" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options-300x153.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options-1536x785.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/field-design-options-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Make sure to take advantage of Divi 5&#8217;s <em>State Picker</em> controls that allow you to change styles based on <em>Hover, Focus, Checked, </em>or <em>Active</em> states.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321180 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls.jpeg" alt="Divi 5 state controls" width="1800" height="923" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls-768x394.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls-1536x788.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-state-controls-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Add Pagination</h3>
<p>The last module to add to the section is Pagination. This will allow visitors to cycle through the results if there are more than six. In the right outer Column, below the results grid, click to add a new <em>single Column Nested Row</em>. Then, add the <em>Pagination</em> module to the Row. Keep this outside the repeated Projects Loop Column. In the <em>Content</em> tab, expand the <em>Target</em> option group and select the same <em>Projects Loop</em> Column used by the Post Filter in the <em>Target Loop</em> field.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321181 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop.jpeg" alt="pagination target loop" width="1800" height="925" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop-768x395.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop-1536x789.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/pagination-target-loop-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Next, expand the <em>Text</em> option group and place your preferred text into the <em>Previous Link</em> and <em>Next Link</em> fields.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321182 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links.jpeg" alt="previous and next links" width="1800" height="922" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links-1536x787.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/previous-and-next-links-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Finally, swap to the <em>Design</em> tab, expand the <em>Link Text</em> option group, and style the links.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321183 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text.jpeg" alt="style pagination links text" width="1800" height="924" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text-768x394.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text-1536x788.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/style-pagination-links-text-610x313.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Configure Responsive Behavior</h3>
<p>With all modules present and styled, we&#8217;ll use Divi 5&#8217;s <a href="https://www.elegantthemes.com/blog/theme-releases/customizable-responsive-breakpoints">Customizable Responsive Breakpoints</a> to make any necessary changes to the layout. Start by enabling the <em>Tablet Breakpoint</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321186 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint.jpeg" alt="Divi 5 tablet breakpoint" width="1800" height="921" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint-1536x786.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Divi-5-tablet-breakpoint-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The most glaring problem is how the Project grid is displaying at the Tablet breakpoint. To fix it, select the <em>Nested Row containing the Projects Loop Column</em> and click <em>Apply Structure Template</em>. This is the results Row, not the outer Row containing the sidebar.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321191 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template.jpg" alt="apply a structure template" width="1800" height="925" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template-300x154.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template-768x395.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template-1536x789.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/apply-structure-template-610x313.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>When the <em>Reset Tablet Column Structure</em> modal appears, choose a <em>single Column Flex Row</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321192 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template.jpeg" alt="single column structure template" width="1800" height="921" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template-1536x786.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/single-column-structure-template-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Divi 5 will resize the Row to improve the layout&#8217;s appearance on Tablet devices. Next, swap to the <em>Phone Breakpoint</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321193 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint.jpeg" alt="phone breakpoint" width="1800" height="921" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint-1536x786.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/phone-breakpoint-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>On Phone, ensure both outer Columns are full width so the filter form stacks above the results. Keep the repeated Projects Loop Column full width on Tablet and Phone, with <em>No Wrap</em> and the <em>260px Min Height</em>. Enable <em>Wrap</em> on the two Module Groups inside each card so long titles and metric labels fit on narrow screens.</p>
<p>Reduce the space between rows as necessary by adjusting the <em>Vertical Gap</em> at the <em>section</em> level.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321194 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap.jpeg" alt="section vertical gap" width="1800" height="920" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap-300x153.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap-1536x785.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/section-vertical-gap-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h3>Test The Build</h3>
<p>The last step in the build is to test the functionality on the front end. <em>Save</em> the page, then select the <em>Exit</em> dropdown. Click on <em>View Page</em> and open the page in your browser.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321198 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end.jpg" alt="view Divi layout on the front end" width="1800" height="886" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end-300x148.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end-768x378.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end-1536x756.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/view-layout-on-the-front-end-610x300.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Use the Post Filter form to select a specific service, choose an Industry, or reorder the search results. Tap the Apply button to filter the results and the Reset button to clear all search criteria.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/test-the-Project-Loop.mp4" /></video></p>
<h2>Download The Files</h2>
<p>To give you a head start, we&#8217;ve created a zip file with the filterable Portfolio loop we built in this post. Fill out the form below to download the file and extract the ZIP on your computer. Then head to <em>Divi &gt; Divi Library</em> and click the <em>Import &amp; Export</em> button.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-315955 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export.jpg" alt="import Divi Builder layouts into the Divi Library" width="1800" height="891" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export-300x149.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export-768x380.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export-1536x760.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/Divi-Library-import-export-610x302.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Choose the <em>Import</em> tab, select the layout&#8217;s JSON file from the extracted folder, and click <em>Import Divi Builder Layouts</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321202 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2.jpeg" alt="import divi layouts" width="1800" height="866" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2-300x144.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2-768x369.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2-1536x739.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/import-divi-layouts-2-610x293.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Ensure that you have created all of the required custom fields and Projects on your WordPress site, then open or create a new page. The layout does not include your Project posts, service terms, ACF field group, or the featured images and custom-field values attached to those Projects. When the Visual Builder loads, click to <em>add a new section</em> to the page.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-316451 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi-.jpg" alt="add new section to Divi" width="1800" height="727" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi-.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi--300x121.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi--768x310.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi--1536x620.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/06/add-new-section-to-Divi--610x246.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Choose the <em>Add From Library</em> tab and select your saved <em>layout</em>.</p>
<p><img loading="lazy" decoding="async" class="with-border alignnone wp-image-321203 size-full" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library.jpeg" alt="choose layout from the Divi Library" width="1800" height="921" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library.jpeg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library-300x154.jpeg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library-768x393.jpeg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library-1536x786.jpeg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/choose-layout-from-the-Divi-Library-610x312.jpeg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Finally, click <em>Use This Section</em> to load the layout into the Visual Builder. Check each module&#8217;s Dynamic Content and confirm that Post Filter and Pagination both target the <em>Projects Loop</em>.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/use-this-layout.mp4" /></video></p>
<div class="et_bloom_locked_container et_bloom_optin_1" data-page_id="320966" data-optin_id="optin_1" data-list_id="mailchimp_c886a2fc0a" data-current_optin_id="optin_1">
					<div class="et_bloom_locked_content" style="display: none;">
						<a href="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/Filterable-Portfolio-Loop.zip" class="button inline-button primary-button" rel=" ">Download the Files</a>
					</div>
					<div class="et_bloom_locked_form">
						<div class="et_bloom_inline_form et_bloom_optin et_bloom_make_form_visible et_bloom_optin_1" style="display: none;">
				<style type="text/css">.et_bloom .et_bloom_optin_1 .et_bloom_form_content { background-color: #4843d2 !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container .et_bloom_form_header { background-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge .et_bloom_form_content:before { border-top-color: #ffffff !important; } .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before, .et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:before { border-top-color: transparent !important; border-left-color: #ffffff !important; }
						@media only screen and ( max-width: 767px ) {.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before { border-top-color: #ffffff !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_1 .carrot_edge.et_bloom_form_left .et_bloom_form_content:after { border-bottom-color: #ffffff !important; border-left-color: transparent !important; }
						}.et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_fields i { color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_content .et_bloom_custom_field_radio i:before { background: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_border_solid { border-color: #f7f9fb !important } .et_bloom .et_bloom_optin_1 .et_bloom_form_content button { background-color: #f92c8b !important; } .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container h2 strong { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; }.et_bloom .et_bloom_optin_1 .et_bloom_form_container p, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p span, .et_bloom .et_bloom_optin_1 .et_bloom_form_container p strong, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form input, .et_bloom .et_bloom_optin_1 .et_bloom_form_container form button span { font-family: "Open Sans", Helvetica, Arial, Lucida, sans-serif; } p.et_bloom_popup_input { padding-bottom: 0 !important;}</style>
				<div class="et_bloom_form_container  with_edge carrot_edge et_bloom_border_solid et_bloom_rounded et_bloom_form_text_light et_bloom_form_bottom et_bloom_inline_1_field">
					
			<div class="et_bloom_form_container_wrapper clearfix">
				<div class="et_bloom_header_outer">
					<div class="et_bloom_form_header split et_bloom_header_text_dark">
						<img decoding="async" src="https://www.elegantthemes.com/blog/wp-content/plugins/bloom/images/premade-image-06.png" alt="Download For Free" class=" et_bloom_image_slideup et_bloom_image">
						<div class="et_bloom_form_text">
						<h2>Download For Free</h2><p>Join the Divi Newsletter and we will email you a copy of the ultimate Divi Landing Page Layout Pack, plus tons of other amazing and free Divi resources, tips and tricks. Follow along and you will be a Divi master in no time. <em>If you are already subscribed simply type in your email address below and click download to access the layout pack.</em></p>
					</div>
						
					</div>
				</div>
				<div class="et_bloom_form_content et_bloom_1_field et_bloom_bottom_inline">
					
					
					<form method="post" class="clearfix">
						<div class="et_bloom_fields">
							
							<p class="et_bloom_popup_input et_bloom_subscribe_email">
								<input placeholder="Enter your email address">
							</p>
							
							<button data-optin_id="optin_1" data-service="mailchimp" data-list_id="c886a2fc0a" data-page_id="320966" data-account="Divi Daily" data-ip_address="true" class="et_bloom_submit_subscription et_bloom_submit_subscription_locked">
								<span class="et_bloom_subscribe_loader"></span>
								<span class="et_bloom_button_text et_bloom_button_text_color_light">DOWNLOAD</span>
							</button>
						</div>
					</form>
					<div class="et_bloom_success_container">
						<span class="et_bloom_success_checkmark"></span>
					</div>
					<h2 class="et_bloom_success_message">You have successfully subscribed. Please check your email address to confirm your subscription and get access to free weekly Divi layout packs!</h2>
					
				</div>
			</div>
			<span class="et_bloom_close_button"></span>
				</div>
			</div>
					</div>
				</div>
<h2>Build Dynamic Portfolios With Divi 5</h2>
<p>Moving beyond static thumbnail grids is essential for showcasing work that converts prospects into clients. By combining the power of <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>, the <a href="https://www.elegantthemes.com/blog/theme-releases/loop-builder">Loop Builder</a>, the <a href="https://www.elegantthemes.com/blog/theme-releases/loop-filter-modules">Loop Filter modules</a>, and <a href="https://www.elegantthemes.com/blog/theme-releases/flexbox">Flexbox</a>, you can transform a standard portfolio into dynamic, filterable case studies.</p>
<p>With this setup in place, visitors can search by client, filter projects by service or industry, and examine the performance metrics you enter for each Project directly on the cards. By following the steps in this post, you now have the tools to build a fully functional, highly interactive portfolio that elevates your work and delivers a professional user experience.</p>
<p>Let us know what you think in the comments below or reach out on our social media channels.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-filterable-portfolio-with-divi-5s-loop-builder">How To Create A Filterable Portfolio With Divi 5&#8217;s Loop Builder</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/how-to-create-a-filterable-portfolio-with-divi-5s-loop-builder/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/09/How-To-Create-A-Filterable-Portfolio-With-Divi-5s-Loop-Builder.jpeg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>Everything You Need To Know About The Icon Manager In Divi 5</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-the-icon-manager-in-divi-5</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-the-icon-manager-in-divi-5#respond</comments>
		
		<dc:creator><![CDATA[Donjete Vuniqi]]></dc:creator>
		<pubDate>Sat, 07 Nov 2026 16:00:19 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Feature]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=323537</guid>

					<description><![CDATA[<p>A compass, a coffee cup, and a riverside marker can give a walking guide its own visual language. But which collection holds the right symbols when it&#8217;s time to add another route? The Icon Manager in Divi 5 puts our icon library in one place. We can add custom artwork and group the symbols a [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-the-icon-manager-in-divi-5">Everything You Need To Know About The Icon Manager In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A compass, a coffee cup, and a riverside marker can give a walking guide its own visual language. But which collection holds the right symbols when it&#8217;s time to add another route?</p>
<p>The <a href="https://www.elegantthemes.com/blog/theme-releases/icon-manager">Icon Manager</a> in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> puts our icon library in one place. We can add custom artwork and group the symbols a project needs into collections. Those collections appear in Divi&#8217;s icon picker, ready to use as we build.</p>
<p>We&#8217;ll use a city-walk design to explore that workflow, from choosing a single icon to taking a whole collection to another website.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323570" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons.jpg" alt="City walk design with compass and labeled landmark icons" width="1800" height="840" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons-300x140.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons-768x358.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons-1536x717.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Wayfinder-city-walk-design-with-compass-and-labeled-landmark-icons-610x285.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<h2>What The Icon Manager Does And Where To Find It</h2>
<p>The Icon Manager organizes the icons available across your website. Divi Icons and Font Awesome provide starting collections. We can also create our own collections, grouping symbols to suit a client&#8217;s brand or a specific part of the site.</p>
<p>For a city guide, a small collection could hold navigation symbols and landmark icons. The same collection would be available when editing another walk, a neighborhood directory, or a contact section on that site.</p>
<p>To reach the Manager from an Icon Module:</p>
<ol>
<li>Open the module&#8217;s settings in the Visual Builder.</li>
<li>Under <strong>Content</strong>, expand the <strong>Icon</strong> option group.</li>
<li>Click the selected icon&#8217;s preview to open the picker.</li>
<li>Click <strong>Icon Manager</strong> at the bottom of the picker.</li>
</ol>
<p>Use the picker to choose an icon for the current field; open the Manager when you need to work on the library itself. Both are available inside the Builder.</p>
<h2>Choose Icons With The Updated Picker</h2>
<p>An icon field displays a compact preview of its current selection. Click that preview to browse the grid, search for a symbol, or narrow the results with collection filters. Choose <strong>All Collections</strong> to browse enabled collections together.</p>
<p>Open a field that already has an icon and its collection can open first, keeping related choices nearby when we want a replacement. The compass field in our example opens on its current icon collection.</p>
<p>Search works best when the library has useful names and search terms. For our walking guide, words such as coffee, navigation, and water describe the role each symbol plays. Choose a matching icon, then check its appearance in the layout.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323564" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker.jpg" alt="Choosing a compass in the Divi 5 icon picker" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Choosing-a-compass-in-the-Divi-5-icon-picker-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The picker also groups filters such as <strong>Theme Icons</strong>, <strong>Custom Icons</strong>, and <strong>Styles</strong>. These help narrow a broad library before choosing the final symbol. If the symbol is missing, open the Manager to organize or import it. When opened from a picker, the Manager offers <strong>Insert</strong> for one compatible selected icon in an enabled collection; selecting several icons exposes collection actions instead.</p>
<h2>Create A Collection For Your Website</h2>
<p>A collection gives editors a set of icons chosen for the project. For the city-walk design, we could gather the compass, coffee, location, and water symbols into one collection of essential icons.</p>
<p>Open the Icon Manager, click <strong>New Collection</strong>, enter the collection name, and click <strong>Create</strong>. We can populate it by copying included icons or importing our own files. A collection can contain SVG icons and font icons together.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323565" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection.jpg" alt="Creating a custom icon collection in Divi 5" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Creating-a-Wayfinder-Essentials-icon-collection-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Keep the name understandable to the next person editing the website. A client who sees Brand Essentials or Walking Routes has a better starting point than someone faced with an unexplained file name. Collections can be renamed as the project takes shape.</p>
<h2>Import Custom SVGs And Icon Fonts</h2>
<p>Custom imports let us use a client&#8217;s own artwork through Divi&#8217;s icon fields. SVGs suit a small set of individual symbols. An icon font suits a library already packaged as a font file.</p>
<h3>Add SVG Icons To A Collection</h3>
<p>For a city guide, we might commission matching compass, coffee, and route SVGs. Importing that set gives editors a consistent family to choose from as they create more walking routes.</p>
<ol>
<li>Click <strong>Import Icons</strong> in the Icon Manager.</li>
<li>In the <strong>Add Icons</strong> window, click <strong>Choose Icon Files</strong> and select the SVGs.</li>
<li>Choose an existing <strong>Collection</strong>, or choose a new collection and enter its <strong>Collection Name</strong>.</li>
<li>Click <strong>Import</strong> and wait for the import to finish.</li>
</ol>
<p>The upload window also offers <strong>Add More SVGs</strong> when working with SVG files. We can assemble the set before submitting the import, rather than opening a separate upload for every symbol.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323567" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials.jpg" alt="Importing custom SVG icons into a collection in Divi 5" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Importing-custom-SVG-icons-into-Wayfinder-Essentials-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>After importing, return to an icon field and find the collection in the picker. Inspect a symbol in its intended setting: a delicate outline that works as a large compass may need more weight when used beside a small landmark label.</p>
<h3>Import An Icon Font And Optional Names</h3>
<p>The uploader accepts <strong>WOFF2</strong>, <strong>WOFF</strong>, <strong>TTF</strong>, and <strong>OTF</strong> icon-font files. Choose the font through <strong>Choose Icon Files</strong>, select its destination collection, and import it. Supply a supported font file directly rather than the ZIP package from an icon provider.</p>
<p>When a font is selected, the optional <strong>Name Mapping File</strong> field appears. This accepts a JSON file containing an icons array with Unicode values, names, and optional search terms. The mapping associates readable labels with the font&#8217;s glyphs.</p>
<p>A compass glyph could include navigation and bearings as search terms. That makes the library easier to browse than a set of unexplained character codes. The JSON supplies naming information; the font supplies the actual artwork.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323563" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import.jpg" alt="Adding an optional name mapping file to an icon font import" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Adding-an-optional-name-mapping-file-to-an-icon-font-import-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Your site&#8217;s upload limit applies to these files. If an import fails, check the format and the error shown in the upload window before trying the same file again.</p>
<h2>Organize Icons With Copy, Move And Remove</h2>
<p>We don&#8217;t have to import artwork to create a useful collection. We can gather included icons into a smaller set that fits the website.</p>
<p>Expand a collection and select an icon to reveal its available actions. Hold <strong>Ctrl</strong> on Windows or <strong>Command</strong> on Mac while clicking additional icons to build a selection. Modifier-clicking a selected icon removes it from that selection.</p>
<p>Choose the operation according to the result you want:</p>
<ul>
<li><strong>Copy:</strong> Add the selected icons to another collection while keeping them in the source collection.</li>
<li><strong>Move:</strong> Transfer the selected icons to another collection and remove their membership from the source collection.</li>
<li><strong>Remove:</strong> Take the selected icons out of the current collection.</li>
</ul>
<p>For our city guide, <strong>Copy</strong> is a useful starting point: gather the needed symbols into a dedicated collection while preserving their original organization. Both Copy and Move offer another collection as the destination, so create that destination first.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323568" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection.jpg" alt="Selecting several icons and copying them to another collection" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Selecting-several-icons-and-copying-them-to-another-collection-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>An icon&#8217;s right-click menu also exposes available actions. Check the selection before confirming a removal. Removing collection membership preserves icons already used in layouts and the underlying custom files in the Media Library. With no icons selected, <strong>Reset</strong> restores the collection&#8217;s original icon assignments while retaining icons added to it.</p>
<h2>Set A Default And Control Picker Visibility</h2>
<p>A default collection gives new icon choices a useful starting point. Expand an enabled collection and clear any icon selection to reveal <strong>Make Default</strong>. Click it to make that collection the starting choice; the button then reads <strong>Default</strong>. An existing icon can still open its own collection when its field is edited.</p>
<p>Each collection also has a toggle controlling whether it appears in icon pickers across the site. For a focused client handoff, enable the approved collections and turn off sets that would distract from those choices. The default collection must remain enabled; choose another default before disabling it.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323569" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility.jpg" alt="Setting the default icon collection and controlling picker visibility" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Setting-the-default-icon-collection-and-controlling-picker-visibility-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>Turning off a collection preserves the icons already placed on pages. This lets us simplify future choices without replacing existing artwork. It also means changing the default collection doesn&#8217;t automatically restyle the icons throughout a website.</p>
<h2>Export And Import Collections</h2>
<p>Once a collection fits a project, we can reuse it on another website. For example, a city-guide publisher could prepare its approved landmark symbols once and take that collection to a separate regional site.</p>
<p>Open <strong>Import &amp; Export Icon Collections</strong> in the Manager&#8217;s header. Select the collections to include and choose <strong>Export Icon Collections</strong>. On the destination website, open the same control and use <strong>Import Icon Collections</strong> to bring them into its library.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border wp-image-323566" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager.jpg" alt="Exporting selected icon collections from the Icon Manager" width="1800" height="975" srcset="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager.jpg 1800w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager-300x163.jpg 300w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager-768x416.jpg 768w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager-1536x832.jpg 1536w, https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/Exporting-selected-icon-collections-from-the-Icon-Manager-610x330.jpg 610w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p>The collection export includes icon assignments and referenced custom icon files, including font name mappings when present. It transfers the library resources; the page&#8217;s layout, spacing, and colors belong to the page design. Check both the imported collection and its intended icon fields on the destination site.</p>
<h2>Use Divi AI Agents To Manage Icons</h2>
<p><a href="https://www.elegantthemes.com/blog/theme-releases/ai-agent">Divi AI Agents</a> can help find icons in the library and organize them. The agent can create or rename a collection and turn it on or off in pickers. It can also import supported attached files or files already in the Media Library.</p>
<p>For a larger library, use search to identify suitable symbols before requesting changes. Name the destination collection when asking the agent to organize icons, and review the proposed selection. Imports, moves, removals, and collection deletions request confirmation.</p>
<p>The visual Manager remains useful for checking the outcome. Open the collection, inspect its contents, and try the icons in a field. An agent can help with library tasks, while the page preview shows whether the choices suit the design.</p>
<h2>What To Know Before Editing A Shared Icon Library</h2>
<p>Collections affect the whole website. If we rename a collection or change its contents, everyone working on that site sees the change. Library changes are saved separately from the page being edited in the Visual Builder.</p>
<p>Managing icons requires permission to manage theme options and upload files. Collection portability also depends on Divi&#8217;s portability permissions. Someone may be able to select icons while lacking the controls to manage the library. If management controls are missing, ask the site administrator to check those permissions.</p>
<p>To delete a custom collection, clear its icon selection, click <strong>Delete</strong>, and review the confirmation. Built-in collections have no Delete control. Existing page uses and the underlying Media Library files are preserved when a custom collection is deleted, so file cleanup remains a separate job.</p>
<p>When several people manage the same library, Divi may ask you to <strong>Reload Library</strong> after a conflicting change. Reload to see the current contents before trying the action again. The <a href="https://help.elegantthemes.com/en/articles/17693045-the-icon-manager-in-divi-5">Icon Manager documentation</a> provides a reference for these shared-library behaviors.</p>
<h2>Build A More Consistent Icon Library In Divi 5</h2>
<p>A compact collection can make a design easier to extend. In our example, the large compass establishes the walking-map theme, while labeled landmark symbols give each stop a recognizable identity. The staggered route gives those icons a purpose within the composition.</p>
<p>Start with the symbols your website needs and gather them into a collection editors will recognize. Add custom SVGs or an icon font in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a> when the project calls for its own artwork. A focused library gives the next person building a page a useful set of choices from the start.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-the-icon-manager-in-divi-5">Everything You Need To Know About The Icon Manager In Divi 5</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/everything-you-need-to-know-about-the-icon-manager-in-divi-5/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/divi-5-the-icon-manager-ft-img-3.jpeg" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>Introducing Divi Notes: Collaboration For Your Team, Clients and Agents</title>
		<link>https://www.elegantthemes.com/blog/theme-releases/divi-notes</link>
					<comments>https://www.elegantthemes.com/blog/theme-releases/divi-notes#respond</comments>
		
		<dc:creator><![CDATA[Nick Roach]]></dc:creator>
		<pubDate>Fri, 06 Nov 2026 21:03:20 +0000</pubDate>
				<category><![CDATA[Theme Releases]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=324270</guid>

					<description><![CDATA[<p>Divi Notes brings feedback, conversations, and assigned tasks directly into Divi 5. Attach a note to an element, discuss the change with your team, and resolve it when the work is complete. 🎉 It&#8217;s also a great way to leave contextual notes for yourself so you never forget a TODO. A request to update a [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/theme-releases/divi-notes">Introducing Divi Notes: Collaboration For Your Team, Clients and Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=uiU8xmwGzNs" rel="noopener" target="_blank">Divi Notes</a> brings feedback, conversations, and assigned tasks directly into <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>. Attach a note to an element, discuss the change with your team, and resolve it when the work is complete. 🎉</p>
<p>It&#8217;s also a great way to leave contextual notes for yourself so you never forget a TODO.</p>
<p>A request to update a headline belongs beside that headline. A question about a button belongs with that button. Notes keep those conversations connected to the design, giving everyone a clearer picture of what needs attention.</p>
<p>You can organize feedback with categories, control your notifications, and ask the <a href="https://www.elegantthemes.com/ai-agent/">Divi AI Agent</a> to work through tasks using the attached discussion.</p>
<p><strong>Let&#8217;s take a look.</strong> 👇</p>
<p><iframe loading="lazy" class="youtube-player" type="text/html"  title="Introducing Divi Notes" width="719" height="404" src="https://www.youtube.com/embed/uiU8xmwGzNs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<h2>Leave Notes On Relevant Elements</h2>
<p><a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=99s" rel="noopener" target="_blank">Right-click an element and choose Add Note</a>. The Add Note window lets you confirm the element, write your note, choose an Assignee, and select a Category before clicking Submit.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="900" height="506" data-mce-fragment="1" playsinline webkit-playsinline><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/notesnotifications-small.mp4" type="video/mp4" /><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span></video></p>
<p>You can also open Notes from the builder bar and use Add Note, then click on or search for the element you want to discuss.</p>
<p>Imagine reviewing a client&#8217;s services page. Attach &#8220;Replace this headline with the approved copy&#8221; to the heading, leave a spacing request on the surrounding row, and add a question to the contact button.</p>
<p>Each conversation has its own target.</p>
<h3>Find Notes On The Page And In Layers</h3>
<p>With Notes open, <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=61s" rel="noopener" target="_blank">numbered badges identify elements with open notes on the canvas</a>. The Layers panel also displays note counts beside element labels. Click a badge to view the discussions associated with that element.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="900" height="506" data-mce-fragment="1" playsinline webkit-playsinline><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/notesicons-small.mp4" type="video/mp4" /><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span></video></p>
<p>You can also hover and click on elements on the canvas to highlight relevant notes in the Notes panel.</p>
<p>Use Go To Element from a note&#8217;s menu to return to its target, or choose Copy Link to share a direct link to the discussion with another authorized editor.</p>
<p>Notes remain private to authorized website editors and do not appear on the public page.</p>
<h2>Give Every Request An Owner</h2>
<p><a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=139s" rel="noopener" target="_blank">Choose an Assignee when creating a note</a>, or leave it unassigned until you know who should handle it. You can change the assignee later from the conversation without posting another reply.</p>
<p>Type @ in a note or reply to mention an eligible website user. That makes it easy to bring your copywriter into the conversation about a content question or ask your designer to review a specific element.</p>
<p>The For Me tab gathers open notes that are assigned to you or mention you. On a busy project, it gives each person a focused view of the feedback that needs their attention.</p>
<p>Assignments and mentions use eligible WordPress accounts with access to the relevant page. Divi&#8217;s Role Editor also includes View Notes, Add and Reply to Notes, and Manage Notes controls so you can configure access for your team.</p>
<h2>Keep The Discussion With The Work</h2>
<p>Open a note to <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=554s" rel="noopener" target="_blank">read its conversation, post a reply, or add an emoji reaction</a>. Follow-up questions, assignment changes, and resolution updates stay together in the thread.</p>
<p>When you finish a request, choose Resolve with Reply to explain what changed and close the task in one step. The discussion moves into the Resolved tab, preserving its history for later reference.</p>
<p>If another revision is needed, use Reopen with Reply to bring it back into the open list with an explanation.</p>
<p>For example, a designer could adjust a product image and reply, &#8220;Updated the crop to keep the entire product visible.&#8221; If the next review calls for a different crop, the reviewer can reopen that same discussion.</p>
<h2>Organize Your Review Around Your Workflow</h2>
<p>Notes include <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=619s" rel="noopener" target="_blank">Design, Content, Development, Accessibility, and Question categories</a>. Use them to distinguish copy revisions from layout adjustments or technical questions.</p>
<p>You can also create your own labels and customize their colors.</p>
<p>Users with the required Notes permissions can open Manage Labels from the Category picker to create, rename, recolor, reorder, or remove labels. These labels are shared across the website.</p>
<p>You could add a &#8220;Launch Checklist&#8221; category for final revisions or a &#8220;Client Question&#8221; category for decisions that require an answer before work can continue.</p>
<h3>Find The Right Conversation</h3>
<p>Switch between Open, For Me, and Resolved, then search the notes and their replies. Filters let you narrow the list by author, assignee, or mention, category, read status, follow status, notification status, and element type.</p>
<p>You can also <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=285s" rel="noopener" target="_blank">work with several notes together</a>. Use Ctrl-click or Command-click to select individual notes, or Shift-click to select a range, then open the context menu to resolve, reopen, mark unread, or mute notifications for the selection.</p>
<p>You can even ask the AI Agent to solve all notes at once!</p>
<h2>Choose Which Updates Reach Your Inbox</h2>
<p>Open Email notifications in the Notes panel to <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=241s" rel="noopener" target="_blank">choose which events send you email</a>. Options cover assignments, mentions, replies, and resolution or reopening updates for notes you created, follow, or are assigned to.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="900" height="506" data-mce-fragment="1" playsinline webkit-playsinline><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/notesnotifications-small.mp4" type="video/mp4" /><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span></video></p>
<p>Use Follow to keep track of a discussion, or Mute Notifications to silence a particular thread. You can also mark a note unread when you want to return to it later.</p>
<p>Notification emails include conversation context and an Open in Divi link. That gives a teammate a direct route back to the discussion when they are ready to respond.</p>
<h2>Turn Feedback Into Tasks For The Divi AI Agent</h2>
<p>Notes also connects with the <a href="https://www.elegantthemes.com/blog/theme-releases/ai-agent">Divi AI Agent</a>. We added a wide range of notes-related tools, allowing the agent to add, update, delete, resolve, assign, and respond to notes.</p>
<p><video class="et-video-loop card" autoplay="autoplay" loop="loop" muted="" width="900" height="506" data-mce-fragment="1" playsinline webkit-playsinline><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/notesai-small.mp4" type="video/mp4" /><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end">﻿</span></video></p>
<h3>Assign Tasks To Your Agent And Have Them Resolve Notes For You</h3>
<p>Choose <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=285s" rel="noopener" target="_blank">Resolve With AI Agent</a> to hand over a note&#8217;s discussion and attached element as a task.</p>
<p>The handoff asks the agent to read the latest conversation, make the requested changes, verify its work, and reply in the same thread before resolving the note. If the task is blocked or uncertain, the agent is instructed to explain the problem and leave the note open.</p>
<p>For example, attach &#8220;Reduce this heading&#8217;s size on phones&#8221; to a heading, then use Resolve With AI Agent to ask it to handle the adjustment with the discussion as context.</p>
<p>You can select several open notes and send them together. The agent receives instructions to handle each task separately and continue through the remaining notes when one is blocked.</p>
<h3>Ask The Agent To Audit Pages And Leave Notes</h3>
<p>The agent can also <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs&#038;t=378s" rel="noopener" target="_blank">audit a page and leave notes on the issues it finds</a>, turning its recommendations into feedback attached to the relevant elements.</p>
<p>Try asking, &#8220;Review this page for inconsistent spacing and unclear calls to action. Leave a note on each element that needs improvement, explaining your recommendation.&#8221;</p>
<p>You can review those suggestions, assign them to teammates, or use Resolve With AI Agent to ask the agent to work through them. It&#8217;s a useful way to build a list of improvements before deciding which changes to make.</p>
<h2>Did You Miss Divi 5&#8217;s New Variable Features?</h2>
<p><iframe loading="lazy" class="youtube-player" type="text/html"  title="Big Divi Variables &amp; Dynamic Content Upgrade!" width="719" height="404" src="https://www.youtube.com/embed/Tf_3c6XGybk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>We recently released <a href="https://www.elegantthemes.com/blog/theme-releases/variable-math">Nested Variables, Variable Math &amp; Variable Combinations</a> for Divi 5 variables: combine them, nest them within other variables, and use them directly in calculations within your settings. 🎉</p>
<p>Create spacing relationships that stay connected as your design changes. Build fluid sizes from shared minimum and maximum values. Mix reusable text, dynamic content, and your own words in the same field.</p>
<p>This expands on <a href="https://www.elegantthemes.com/blog/theme-releases/design-variables">Design Variables</a> and works alongside <a href="https://www.elegantthemes.com/blog/theme-releases/relative-colors">Relative Colors</a>, turning reusable values into the building blocks of more connected designs and content.</p>
<h2>More Divi 5 Updates Are On The Way</h2>
<p>The features keep coming, and we aren&#8217;t slowing down anytime soon!</p>
<p>If you are enjoying these updates, do us a huge favor by <a href="https://www.youtube.com/watch?v=uiU8xmwGzNs" rel="noopener" target="_blank">liking this video and leaving a comment</a>. It means a lot to us to see you cheering Divi on, and it&#8217;s essential to feed the algorithm and spread the word.</p>
<p>Don&#8217;t forget to <a href="https://www.youtube.com/c/elegantthemes?sub_confirmation=1" rel="noopener" target="_blank">follow us on YouTube</a> and subscribe to the <a href="https://www.elegantthemes.com/newsletter/">Divi newsletter</a> so you never miss an update. I&#8217;ll see you soon for another Divi 5 feature announcement, which I promise will be right around the corner.</p>
<p>The post <a href="https://www.elegantthemes.com/blog/theme-releases/divi-notes">Introducing Divi Notes: Collaboration For Your Team, Clients and Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/theme-releases/divi-notes/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/landscape-2.png" width="280" type="image/jpg" medium="image" />	</item>
		<item>
		<title>Page-Wide Copy And SEO Improvements Using Divi AI Agents</title>
		<link>https://www.elegantthemes.com/blog/divi-resources/page-wide-copy-and-seo-improvements-using-divi-ai-agents</link>
					<comments>https://www.elegantthemes.com/blog/divi-resources/page-wide-copy-and-seo-improvements-using-divi-ai-agents#respond</comments>
		
		<dc:creator><![CDATA[Deanna McLean]]></dc:creator>
		<pubDate>Fri, 06 Nov 2026 16:00:09 +0000</pubDate>
				<category><![CDATA[Divi Resources]]></category>
		<category><![CDATA[divi 5]]></category>
		<category><![CDATA[Divi 5 Tutorial]]></category>
		<category><![CDATA[Divi AI Agents]]></category>
		<guid isPermaLink="false">https://www.elegantthemes.com/blog/?p=322086</guid>

					<description><![CDATA[<p>A vague headline or a generic “Learn More” button can leave visitors unsure what you offer. With Divi AI Agents in Divi 5, you can revise headlines, service descriptions, and calls to action across a page from one conversation. Choose a search topic that matches your offer, then use it to guide the edits. Each [&#8230;]</p>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/page-wide-copy-and-seo-improvements-using-divi-ai-agents">Page-Wide Copy And SEO Improvements Using Divi AI Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A vague headline or a generic “Learn More” button can leave visitors unsure what you offer. With <a href="https://www.elegantthemes.com/ai-agent/">Divi AI Agents</a> in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>, you can revise headlines, service descriptions, and calls to action across a page from one conversation.</p>
<p>Choose a search topic that matches your offer, then use it to guide the edits. Each change should help visitors understand your service or take the next step.</p>
<p>We&#8217;ll use a fictional web design service page to show the process, with prompts and before-and-after examples you can adapt to your site.</p>
<h2>How Website Copy And On-Page SEO Work Together</h2>
<p>Clear writing helps visitors assess your service; on-page SEO helps search engines identify the page&#8217;s subject. A headline that names your offer and headings that organize the details support both goals.</p>
<p>Use relevant search phrases where they help explain the service. Repeating them in every heading adds little for the reader. Google&#8217;s <a href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content" rel="noopener" target="_blank">people-first content guidance</a> emphasizes useful information written for readers.</p>
<h2>How Divi AI Agents Help Optimize Website Content</h2>
<p>Once you&#8217;ve clarified the offer, the rest of the page needs to support it. Service descriptions should explain what visitors receive, and the closing invitation should help them act on that information. <a href="https://www.elegantthemes.com/ai-agent/">Divi AI Agents</a> let you coordinate those changes inside the <a href="https://www.elegantthemes.com/no-code-design/">Visual Builder</a>, with the conversation and edited page side by side.</p>
<p>Begin in <strong>Ask</strong> mode to share your business details and discuss improvements before anything changes. Once the suggestions fit your offer, switch to <strong>Build</strong> mode to apply them. If you&#8217;re editing a particular heading or button, add it as Context so the agent has a precise target.</p>
<p>For recurring work, saved Rules can carry your writing preferences into relevant tasks while you supply each page&#8217;s facts. You can then review the result against your brief and check its metadata in an SEO plugin, keeping the page text and search description connected.</p>
<h2>How To Improve Page-Wide Copy And SEO Using Divi AI Agents</h2>
<p>Work through these steps on one existing page. You&#8217;ll need Divi 5 and an active subscription that includes Divi AI Agents access.</p>
<p>Sign in with your Elegant Themes account when prompted, and check your AI Wallet balance before beginning. To follow the metadata example, you also need Rank Math installed and activated, or equivalent fields in your existing SEO plugin.</p>
<h3>1. Choose An Existing Page To Optimize</h3>
<p>Choose a page with a defined service and a clear next action. With one offer to focus on, you can judge each edit by whether it helps visitors understand the service and decide to contact you.</p>
<p>Our example offers WordPress websites to small businesses, but “We Create Amazing Websites” leaves those details out. Naming the platform and audience will help visitors recognize whether the service fits their needs, while the descriptions explain what is included.</p>
<p>We&#8217;ll start with the hero and service cards shown below, then follow the message through to the inquiry form. Work on a draft or staging page, keeping a backup and before-and-after captures so you can review what changed.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/The-service-page-before-its-copy-is-optimized.jpeg" alt="The service page before its copy is optimized" width="1800" height="928" /></p>
<h3>2. Identify Target Keywords And Search Intent</h3>
<p>A keyword is a word or phrase someone enters into a search engine. Start with your service and audience to choose a relevant target. “Web design” covers a broad topic, while “small business web design services” gives our example a more specific focus. We&#8217;ll use that phrase as a working target and check it against research data.</p>
<p>Next, consider what that searcher wants to do. Someone hiring a designer needs service details and a way to inquire, while someone learning to build a website needs instructions. This intent guides the information you include, giving the rewrite a purpose beyond using the keyword.</p>
<p>Search your candidate phrase and look at the types of pages that appear. Service pages can suggest a different expectation from instructional articles, although results alone do not measure demand. If you already use <a href="https://www.elegantthemes.com/blog/marketing/google-search-console">Google Search Console</a>, its query data can also show which phrases bring visitors to your site. Use that evidence or your keyword research data to refine the target.</p>
<p>Now turn the topic into a short business brief the agent can work from:</p>
<ul>
<li>Audience: Small-business owners looking for a WordPress website or redesign.</li>
<li>Offer: Website design with mobile layouts and contact forms.</li>
<li>Process: Discovery, design review, and launch preparation.</li>
<li>Primary action: Submit a project inquiry through the existing contact form.</li>
</ul>
<p>The brief gives the agent facts to work with. Use related wording such as WordPress website design naturally, and include locations, prices, or timelines only when they match your business.</p>
<h3>3. Configure Divi AI Agents For Content Optimization</h3>
<p>Open the page in the Divi 5 Visual Builder and click the <strong>Divi AI Agent</strong> icon in the sidebar. Select <strong>Ask</strong> mode for the initial review.</p>
<p>Provide your business brief in the conversation and identify the current page as the editing target. If an element Scope chip is present above the prompt field, click its clear icon before requesting a review of the whole page.</p>
<p><img decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Opening-Divi-AI-Agents-and-switching-between-Ask-and-Build.jpg" alt="Opening Divi AI Agents and switching between Ask and Build" width="1800" /></p>
<p>A saved Rule helps you reuse the same writing preferences as you move between sections or pages. Add that guidance through <strong>Rules</strong> &gt; <strong>Add New Rule</strong>. In <strong>Title</strong>, enter “Service Page Copy.” Use this proposed instruction in the <strong>Rule</strong> field:</p>
<div
	class="aip aip--type-rule aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Rule</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Write for small-business owners in plain American English. Explain each service using the supplied business facts. Preserve customer quotations and verified service details. Do not invent prices, credentials, guarantees, or results. Use the target search phrase where it fits naturally.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy rule"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy rule</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<div
	class="aip aip--type-rule aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Rule: When To Use</span>
																	</div>
									</div>
			
			<div class="aip-prompt">When writing or editing service page copy.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy text"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy text</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>Set <strong>When To Use</strong> to “When writing or editing service page copy.” Leave <strong>Always Use</strong> off for this task-specific Rule, then click <strong>Save Rule</strong>. With <strong>Always Use</strong> off, the agent uses <strong>When To Use</strong> to decide whether the Rule applies to each request.</p>
<p>For more examples of reusable guidance, see our guide to <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-use-divi-ai-agents-rules">Divi AI Agents Rules</a>.</p>
<p>The Rule editor below shows these fields with the revised page in the background. Set up the Rule before starting your edits.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/The-Service-Page-Copy-Rule-in-the-AI-Rule-Editor.jpeg" alt="The Service Page Copy Rule in the AI Rule Editor" width="1800" height="927" /></p>
<h3>4. Analyze And Improve The Existing Copy</h3>
<p>Before revising the wording, use <strong>Ask</strong> mode to see how the agent understands your page. This lets you catch suggestions aimed at the wrong audience or based on facts you never supplied. Share your business brief, then ask for a review:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Review the visible copy on this page for small-business owners considering our web design service. Our target phrase is small business web design services. List vague headlines and missing answers about the offer. Identify inconsistent calls to action and claims that need verification. For each issue, identify the section and propose a change. Do not edit anything yet.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>Read the suggestions alongside the page so you can see what each change would improve. In our review, a closing “Learn More” button linked back to the section it already occupied, giving visitors no useful next step. Check the heading hierarchy separately from the wording; a clearer label does not necessarily need a different heading level. If the agent identifies the wrong heading, add the intended element as Context before continuing.</p>
<p>Click the Context icon beside the prompt field and choose the relevant element. The screenshot below shows a Section reference; select the specific module when the edit concerns one heading or button.</p>
<p><img decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Adding-a-page-element-as-Context-in-Divi-AI-Agents.jpg" alt="Adding a page element as Context in Divi AI Agents" width="1800" /></p>
<p>Once the plan matches your intent, switch to <strong>Build</strong> mode and start with the hero and service descriptions:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Apply the approved copy changes to the hero and service descriptions on this page. Write the hero heading as WordPress Web Design for Small Businesses. Replace its opening paragraph with: Our small business web design services cover new WordPress websites and redesigns, with mobile layouts and contact forms. Use only the supplied offer and process details. Keep the layout, images, button destinations, and customer quotations unchanged.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>Review the text in its modules before expanding the edit to the remaining sections. The prompt requests content changes; check whether the result stays within that scope. Read the agent’s completion summary for skipped edits or uncertain targets. If two modules have the same label, select the intended module on the canvas and retry only that edit.</p>
<p>The video below replays the headline and service-description edits using the saved Service Page Copy Rule.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agents-editing-the-hero-and-service-descriptions.mp4" /></video></p>
<h3>5. Refine Headings, Keyword Usage, And Content Structure</h3>
<p>Headings help visitors scan the page and find answers without reading every paragraph. Review the outline before changing the wording so the service details and next steps have a clear place. The main headings in our example follow this outline:</p>
<ul>
<li>H1: WordPress Web Design for Small Businesses</li>
<li>H2: Our Services</li>
<li>H2: Our Process</li>
<li>H2: Our Work</li>
<li>H2: Get In Touch</li>
</ul>
<p>Use the main heading for the page&#8217;s subject and section headings for the supporting answers. Check the actual heading levels, including any title supplied by your template; large text is not necessarily an H1.</p>
<p>Clear any element Scope before returning to a page-wide check. Ask the agent to inspect the existing structure in <strong>Ask</strong> mode before making changes:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">List the heading text and heading level for each heading in this page&#039;s content. Propose an outline with one main H1, H2 section headings, and H3 subsections where needed. Check whether the introduction explains our web design service. Flag repeated keyword phrases and missing information that a prospective customer needs. Do not make changes yet.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>Review the outline, then use <strong>Build</strong> mode to request the approved heading and text edits. Keep typography unchanged unless you&#8217;re also planning a design adjustment. Explain an omitted service detail using verified information rather than adding paragraphs to reach a word count.</p>
<p>The video below changes the service-card heading from “Website Features” to “Mobile Layouts and Contact Forms,” retaining H3. It demonstrates a wording change within the existing hierarchy.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Divi-AI-Agents-applying-the-approved-heading-structure.mp4" /></video></p>
<h3>6. Strengthen Calls To Action</h3>
<p>Make the next step clear wherever a visitor is ready to contact you. In the hero, “Start a Project Inquiry” tells visitors what they can do next and leads them to the inquiry section. That is more useful than a generic “Learn More” label.</p>
<p>To target the hero button precisely, double-click its Button module on the canvas to open its settings. Confirm the prompt area shows <strong>Scope: Button</strong>, then request this edit in <strong>Build</strong> mode:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Change only the referenced hero button label from Learn More to Start a Project Inquiry. Keep its existing #project-inquiry link and styling. Leave the separate closing Learn More button unchanged. Do not change other modules or publish the page.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>The revised hero below shows the new label alongside a description of the offer. Check that the button still takes visitors to the inquiry section after the edit.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/The-revised-project-inquiry-call-to-action.jpeg" alt="The revised project inquiry call to action" width="1800" height="929" /></p>
<p>Clear the Button Scope before moving to the inquiry section. Select that section as Context or Scope so the next request can include both its introductory Text module and Contact Form.</p>
<p>Carry that wording through to the form. Use “Send Project Inquiry” for its submit button and introduce it with “Tell us about your website project using the form below.” Ask the agent to preserve the form settings while changing those text fields, then test the submission separately.</p>
<p><video class="card lazy" autoplay="autoplay" loop="loop" muted="" width="1800" height="150" playsinline webkit-playsinline><source src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/updating-a-contact-form-with-Divi-AI-Agents.mp4" /></video></p>
<p>The recording leaves the separate closing “Learn More” button in place to isolate the form edits. If it only links back to the section containing the form, remove that redundant Button module or give it a distinct purpose and destination.</p>
<h3>7. Review The Changes And Validate The Page&#8217;s SEO</h3>
<p>Read the full page from top to bottom. Compare each service statement with your business brief and remove unsupported additions.</p>
<p>Use the Desktop, Tablet, and Phone controls in the top Builder bar to preview the layout, especially where longer text wraps inside buttons or cards. Enter a narrow width, such as 320px, in the preview width field and inspect the hero, service cards, and form. The screenshot below locates the preview controls; repeat the check at each relevant width on your page.</p>
<p><img decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/use-Divi-5s-Customizable-Responsive-Breakpoints.jpeg" alt="use Divi 5s Customizable Responsive Breakpoints" width="1800" /></p>
<p>Review the page&#8217;s title tag and meta description in Rank Math or your preferred <a href="https://www.elegantthemes.com/blog/wordpress/best-seo-plugins-for-wordpress">WordPress SEO plugin</a>. The <a href="https://www.elegantthemes.com/blog/wordpress/how-to-craft-the-perfect-seo-page-title">title tag</a> identifies the page for search, while the <a href="https://www.elegantthemes.com/blog/wordpress/how-to-write-the-perfect-meta-description-for-seo">meta description</a> summarizes what it offers. They are separate from the visible hero headline and help describe the page before someone visits it.</p>
<p>You can ask the agent to suggest wording in <strong>Ask</strong> mode, then enter the approved text in the plugin:</p>
<div
	class="aip aip--type-prompt aip--no-heading"
		>
	<div class="aip-stage">
		<div class="aip-card">
							<div class="aip-head">
					<div class="aip-titles">
																				<span class="aip-eyebrow">Divi AI Agents Prompt</span>
																	</div>
									</div>
			
			<div class="aip-prompt">Suggest a title tag and meta description for this service page. Describe our small-business WordPress web design offer accurately. Avoid ranking promises and unsupported claims. Return suggestions only; do not change site settings.</div>

										<div class="aip-foot">
											<a href="https://www.elegantthemes.com/ai-agent/" class="aip-cta">
							<span>Get Divi AI Agents</span>
							<svg class="aip-ico aip-ico-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h13M13 6l6 6-6 6"/></svg>
								</a>
																<button
	type="button"
	class="aip-copy"
	data-state="idle"
	data-copy-label="Copy prompt"
	data-copied-label="Copied"
	data-failed-label="Copy failed"
		><svg class="aip-ico aip-ico-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
		<svg class="aip-ico aip-ico-done" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/></svg>
		<span class="aip-copy-label">Copy prompt</span></button>
											</div>
			
		</div>
	</div>

	<span class="aip-status" role="status" aria-live="polite"></span>
</div>
<p>For the demonstration page, Ask mode suggested this title tag: “Small Business WordPress Web Design &amp; Redesign.” Its proposed meta description was: “WordPress website design and redesign for small businesses, including mobile layouts and contact forms. Send a project inquiry through our form.” These suggestions describe the supplied offer without adding business claims.</p>
<p>To enter the approved wording in Rank Math, save your Builder changes and open the page in the WordPress page editor.</p>
<ol>
<li>Click the Rank Math icon to open its panel.</li>
<li>In <strong>General</strong>, click <strong>Edit Snippet</strong> to open the <strong>Preview Snippet Editor</strong>.</li>
<li>Enter the approved text in <strong>Title</strong> and <strong>Description</strong>.</li>
<li>Save the draft or update the page, then reopen those fields to confirm that the values persist.</li>
</ol>
<p>The captured Title and Description fields below match the example wording. Inspect the saved frontend’s title and meta description to confirm that the published output matches those fields.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/Reviewing-the-service-page-metadata-in-the-SEO-plugin.jpeg" alt="Reviewing the service page metadata in the SEO plugin" width="1800" height="891" /></p>
<p>Google can draw title links and snippets from several sources, so the saved fields may differ from the search result. Use your plugin&#8217;s checks to flag issues, then review each suggestion against the page. A higher plugin score does not establish better rankings.</p>
<p>Before publishing, check the rendered headings and test the inquiry form. Confirm the recipient settings, send a test inquiry with dummy details, and verify both the success message and delivery to the intended inbox. Our <a href="https://www.elegantthemes.com/blog/wordpress/on-page-seo-checklist">on-page SEO checklist</a> covers internal links, image descriptions, and indexing checks for a broader review. After publication, use Search Console to monitor the page&#8217;s search performance.</p>
<h2>Before And After: Optimizing A Web Design Service Page</h2>
<p>The revised page explains the service and audience more clearly, then gives visitors a specific next step. Compare the original and revised wording to see how those changes work together.</p>
<h3>Hero Headline</h3>
<p>Before: “We Create Amazing Websites.”</p>
<p>After: “WordPress Web Design for Small Businesses.”</p>
<p>Visitors can now recognize the platform and intended audience immediately. The opening paragraph builds on that message with the working target phrase and the services included.</p>
<h3>Hero Description</h3>
<p>Before: “We provide quality solutions to help your business succeed online.”</p>
<p>After: “Our small business web design services cover new WordPress websites and redesigns, with mobile layouts and contact forms.”</p>
<p>Naming mobile layouts and contact forms gives potential customers something specific to evaluate. Make sure those inclusions match your service before using similar wording on your own page.</p>
<h3>Inquiry Button</h3>
<p>Before, hero button label: “Learn More.”</p>
<p>After: “Start a Project Inquiry.”</p>
<p>The revised label tells visitors what to expect when they click, and the existing link still leads to the inquiry section. The form&#8217;s “Send Project Inquiry” label completes that flow when visitors are ready to submit their details.</p>
<p>Look for that consistency between the opening offer and the action you ask visitors to take.</p>
<p><strong>Before: Original Hero And Services</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/The-service-page-before-its-copy-is-optimized.jpeg" alt="The service page before its copy is optimized" width="1800" height="928" /></p>
<p><strong>After: Revised Hero And Services</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full with-border" src="https://www.elegantthemes.com/blog/wp-content/uploads/2026/10/The-revised-project-inquiry-call-to-action.jpeg" alt="The revised project inquiry call to action" width="1800" height="929" /></p>
<h2>Tips For Editing Service Pages With Divi AI Agents</h2>
<p>As you apply this workflow to other pages, keep each request small enough to review and tie it to a visitor&#8217;s question.</p>
<h3>Limit Each Edit</h3>
<p>Start with one section or group of modules. Name what should change and what should stay, such as the layout or button links. Review the result before moving to the next section; this makes an unwanted change easier to spot.</p>
<h3>Separate Brand Rules From Business Facts</h3>
<p>Use a saved Rule for tone and writing preferences. Supply the offer, audience, and service details in the current chat so those facts match the page you&#8217;re editing. Check any added price or performance claim against its source before keeping it.</p>
<h3>Answer Customer Questions</h3>
<p>Read each section as a prospective customer. Does it explain what&#8217;s included, who the service suits, or how to inquire? Add a missing answer using verified details, and remove repeated phrases that make the explanation harder to follow. Google&#8217;s <a href="https://developers.google.com/search/docs/fundamentals/using-gen-ai-content" rel="noopener" target="_blank">guidance on generative AI content</a> emphasizes accuracy and relevance.</p>
<h3>Track Search And Inquiry Results</h3>
<p>Record the publication date and the sections you changed. Compare later Search Console data and form inquiries with your baseline, noting other changes to the site or offer. Use those observations to plan your next edit; the rewrite alone doesn&#8217;t prove a performance gain.</p>
<h2>Improve Your Website Content With Divi AI Agents</h2>
<p>Start with one service page and a business brief you can trust. With <a href="https://www.elegantthemes.com/ai-agent/">Divi AI Agents</a> in <a href="https://www.elegantthemes.com/divi-5/">Divi 5</a>, you can review the page in <strong>Ask</strong> mode, apply your chosen changes in <strong>Build</strong> mode, and check how the message reads across the page.</p>
<p>For your next pass, use <a href="https://www.elegantthemes.com/blog/divi-resources/how-to-use-divi-ai-agents-context">Context to reference the sections or modules that need attention</a>. Bring your verified service details into the conversation and review the result before publishing, so visitors understand your offer and know how to get in touch.</p>
<div class="inline-elements small-gutters two-column centered"><a href="https://www.elegantthemes.com/members-area/divi-5/" class="button primary-button">Download Divi 5</a><a href="https://www.elegantthemes.com/divi-5/" class="button primary-button accent-purple" style="margin-bottom: 16px;">Learn More About Divi 5</a></div>
<p>The post <a href="https://www.elegantthemes.com/blog/divi-resources/page-wide-copy-and-seo-improvements-using-divi-ai-agents">Page-Wide Copy And SEO Improvements Using Divi AI Agents</a> appeared first on <a href="https://www.elegantthemes.com/blog">Elegant Themes Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.elegantthemes.com/blog/divi-resources/page-wide-copy-and-seo-improvements-using-divi-ai-agents/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://www.elegantthemes.com/blog/wp-content/uploads/2026/11/seo-improvements-with-divi-ai-agents-ft-img-3.jpeg" width="280" type="image/jpg" medium="image" />	</item>
	</channel>
</rss>
