An ACPT repeater can contain all the right content and still produce an empty gallery in Etch. The missing piece is often the data path.
ACPT exposes resolved field data under an acpt key. For an image-and-caption repeater, that gives Etch a list of rows containing image properties and their matching captions.
Start your loop with that resolved data.
The example setup
This guide uses a project portfolio with the following structure:
| Setting | Name |
|---|---|
| Custom post type | work |
| ACPT meta box | meta_box_title |
| Repeater field | gallery_images |
| Image field inside the repeater | gallery_image |
| Text field inside the repeater | caption |
Assign the ACPT field group to the Work post type, then add a few repeater rows to a Work post. Each row should contain an image and a caption.
The resolved repeater key combines the box name and field name:
meta_box_title_gallery_images
That key sits under acpt.
Displaying the gallery on a single Work template
On a single Work template, this refers to the current project. Use its resolved ACPT repeater as the loop source:
{#loop this.acpt.meta_box_title_gallery_images as row}
<figure>
<img
src="{row.gallery_image.value.src}"
alt="{row.gallery_image.value.alt}"
>
<figcaption>{row.caption.value}</figcaption>
</figure>
{/loop}Each iteration represents one repeater row.
The image URL comes from:
row.gallery_image.value.src
The image’s alt text comes from:
row.gallery_image.value.alt
The caption comes from:
row.caption.value
The caption is already part of the same row as its image, so no separate index is needed to keep them paired.
If you configure the loop through Etch’s controls, use this target without curly braces:
this.acpt.meta_box_title_gallery_imagesSet the loop item name to row, then use the image and caption bindings shown above.
Displaying galleries inside a list of projects
A project listing needs two loops:
- An outer post query that retrieves Work posts.
- An inner loop that retrieves each project’s gallery rows.
Suppose the outer query is named workProjects and its item alias is project:
{#loop workProjects as project}
<article>
<h2>{project.title}</h2>
{#loop project.acpt.meta_box_title_gallery_images as row}
<figure>
<img
src="{row.gallery_image.value.src}"
alt="{row.gallery_image.value.alt}"
>
<figcaption>{row.caption.value}</figcaption>
</figure>
{/loop}
</article>
{/loop}Replace workProjects with the key of your saved post query.
The inner source starts with project because it belongs to the current item in the outer loop. If your outer alias is post, the source becomes:
post.acpt.meta_box_title_gallery_imagesIf it is item, use:
item.acpt.meta_box_title_gallery_imagesThe alias must match the name declared after as. Etch’s loop documentation explains how those item names provide the context for dynamic bindings.
Why the metadata preview can be confusing
When inspecting a post’s data, you may find the repeater under a path such as:
meta.meta_box_title_gallery_images
Its value may begin with something like:
a:2:
That is PHP’s serialized representation of the stored data.
ACPT’s acpt integration provides another representation intended for use in the builder: resolved repeater rows with image objects and caption values.
For this example, the useful source is:
this.acpt.meta_box_title_gallery_images
You don’t need to unserialize the raw metadata or loop through separate image and caption lists when the resolved ACPT data is available.
If the gallery is still empty
Check these details before changing the query.
The field group is assigned to Work
ACPT checks field-group visibility when exposing resolved fields. Confirm that the group applies to the post type you are querying.
Stored metadata can exist even when the group’s assignment prevents it from appearing in the resolved acpt data.
The post contains saved repeater rows
Inspect a Work post that has populated rows. A valid post query can return a project with no gallery content.
The names match your installation
The example uses:
meta_box_title_gallery_images
Your box or repeater may have a different name. Use the actual field names rather than assuming the visible labels are identical.
The child bindings must also match your image and caption field names.
The loop uses the correct context
On the current single project, use this.acpt.
Inside an outer project loop, use that loop’s item alias, such as project.acpt.
The attachment has appropriate alt text
The alt binding reads the resolved image object’s alt value. It can be empty if no alt text has been supplied.
Add suitable alt text for images that convey information. A project caption and an image’s alt text serve different purposes, so review them separately.
Validation
The guide validated the resolved ACPT paths on October 28, 2026, using the installed ACPT build, Etch 1.7.1, and WP 7.1.3.
The test created an assigned ACPT field group with two image-and-caption rows. Etch’s server renderer produced both figures with their matching image URLs, alt attributes, and captions using both this.acpt and a nested post-loop alias.
This was a server-rendering validation rather than a visual HTML-editor test.