Docs Vector Expressions ProIntegrationsACF Integration PRO

ACF Integration

Auto-activates when Advanced Custom Fields is installed and active. No settings, no configuration — the integration lights up automatically.

Data Roots

acf — Post Fields

Resolves ACF fields attached to the current post.

{{ acf.hero_image }}
{{ acf.brand_color }}
{{ acf.event_date | acf_date "F j, Y" }}

Properties are dynamic — populated from your ACF field groups filtered by the current post type. When you type acf. in the editor, autocomplete shows the actual field names and labels for that post type.

acf_option — Options Page Fields

Resolves fields from ACF Options pages.

{{ acf_option.company_logo | acf_image 'medium' }}
{{ acf_option.phone_number }}
{{ acf_option.footer_text }}

NOTE

Options page fields use static placeholder properties in the editor, so autocomplete won’t show your actual field names. Fields are resolved correctly at runtime — you just need to know the field name.

acf_user — Current User Fields

Resolves ACF fields for the logged-in user. Returns empty values when no user is logged in.

{{ acf_user.job_title }}
{{ acf_user.profile_photo | acf_image }}
{{ acf_user.department }}

NOTE

Like acf_option, user field properties use static placeholders in the editor. Autocomplete won’t show actual field names, but fields resolve correctly at runtime.

acf_term — Current Term Fields

Resolves ACF fields for the current queried taxonomy term. Only meaningful on taxonomy archive pages — on other page types, fields will return empty values.

{{-- On a category archive page --}}
{{ acf_term.banner_image | acf_image }}
{{ acf_term.featured_color }}

Field Proxy

All four roots use a lazy-loading proxy — get_field() is only called when a specific field is accessed via dot notation. Results are cached per render, so accessing the same field multiple times only triggers one get_field() call. ACF’s false return for non-existent fields is normalized to null.

ACF Modifiers

Field Modifiers

ModifierDescriptionArguments
acf_labelConverts a select/checkbox/radio stored value to its display label. Works with arrays (multi-select).field (field name for lookup)
acf_linkRenders an ACF Link field array as an <a> tag. Adds rel="noopener" when target is set.text (optional custom label)
acf_dateFormats an ACF Date Picker value (Ymd format) into a human-readable string. Also handles Date/Time Picker formats.format (default: site’s date format)
acf_taxonomyRenders an ACF Taxonomy field as comma-separated names. Use format='links' for linked term names.format (links for anchors)

Examples:

{{ acf.priority | acf_label 'priority' }}         → "High" (from stored value "high")
{{ acf.cta_link | acf_link "Get Started" }}        → <a href="..." target="_blank" rel="noopener">Get Started</a>
{{ acf.event_date | acf_date "F j, Y" }}           → "March 15, 2026"
{{ acf.post_categories | acf_taxonomy }}           → "News, Featured"
{{ acf.post_categories | acf_taxonomy format="links" }} → linked term names

Media Modifiers

ModifierDescriptionArguments
acf_imageRenders an ACF Image field array as an <img> tag with width, height, and alt attributes.size (registered image size)
acf_fileRenders an ACF File field array as a download <a> link with download attribute.text (optional custom label)
acf_oembedRenders an ACF oEmbed field. Fetches embed HTML from URLs via wp_oembed_get().
acf_galleryRenders an ACF Gallery field as concatenated <img> tags. Internally uses acf_image for each item.size (registered image size)

Examples:

{{ acf.hero_image | acf_image 'large' }}
{{ acf.download_pdf | acf_file "Download PDF" }}
{{ acf.video_embed | acf_oembed }}
{{ acf.photo_gallery | acf_gallery 'thumbnail' }}

Editor Autocomplete

For the acf root (post fields), the integration hooks into the editor context to inject field metadata — name, label, and type — for the current post type. When you type acf. in the sidebar, you see your actual field names with their labels.

The acf_option, acf_user, and acf_term roots display generic placeholder labels in autocomplete since their fields aren’t scoped to a specific post type. Fields still resolve correctly at runtime.

Security

  • All HTML-producing modifiers sanitize output via esc_url(), esc_attr(), esc_html(), and wp_kses_post() before returning
  • Field access goes through ACF’s own get_field(), which respects ACF’s field-level visibility rules
  • The field proxy normalizes falsenull to prevent ACF’s “field not found” return value from leaking as content