ACF Fields
When you declare a field through ACF_Builder (title(), text(), wysiwyg(), link(), image(), etc.), the system decides whether to expand it into a multilang group. Reading via get_field('heading') always returns the active-language value automatically โ no special helper required.
Auto-applied types (no extra config)
Section titled โAuto-applied types (no extra config)โBecome multilang automatically when Multilang is ON:
texttextareawysiwyglink
// With multilang ON, this declaration becomes a multilang group automatically:ACF_Builder::text(['name' => 'heading', 'label' => 'Heading'])Opt-in types
Section titled โOpt-in typesโNot expanded automatically โ pass 'multilang' => true explicitly:
imagegalleryurlfile
// Image NOT multilang by defaultACF_Builder::image(['name' => 'logo'])
// Multilang image (opt-in)ACF_Builder::image(['name' => 'hero_bg', 'multilang' => true])Unsupported types (passthrough)
Section titled โUnsupported types (passthrough)โNever expanded:
repeater,group,flexible_contentโ containers (their sub-fields can be multilang)spacing,bg_color,tab,noteโ structural fields with no translatable contentselect,radio,boolean,number,date,timeโ values are codes/data, not textrelationship,post_object,taxonomyโ references to other posts, not content
The multilang argument
Section titled โThe multilang argumentโ| Value | Effect |
|---|---|
true | Force expansion to multilang (useful for image/gallery/url/file) |
false | Force NO multilang (useful for explicit opt-out) |
| omitted | Auto-apply by type |
The multilang_skip_primary argument
Section titled โThe multilang_skip_primary argumentโACF_Builder::title(['name' => 'name_ml', 'multilang_skip_primary' => true])When true: skips the sub-field for the primary language. Used when the default-language value already lives in a native WP field (post_title, term name, _thumbnail_id), to avoid visual duplication in the editor.
Knowledge Check
Test your understanding of this section
Loading questions...