Saltar navegación
Actualizado
febrero 5, 2025

ACF le permite registrar campos y grupos de campos utilizando código PHP. Para traducir estos campos con WPML, primero es necesario hacerlos traducibles.

Existe un problema conocido con el registro de campos de diseño ACF (como los campos Repeater) utilizando PHP. Por favor, consulte nuestra solución alternativa disponible para resolver este inconveniente.

Para registrar campos programáticamente, es necesario utilizar la función acf_add_local_field_group. Posteriormente, puede hacer que estos campos ACF sean traducibles especificando la configuración wpml_cf_preferences para cada campo en su código.

Hay cuatro valores numéricos que puede usar para wpml_cf_preferences:

  • Ignorar: 0
  • Copiar: 1
  • Traducir: 2
  • Copiar una vez: 3

A continuación, puede ver un ejemplo de cómo agregar la clave wpml_cf_preferences a un grupo de campos registrado programáticamente.

acf_add_local_field_group( [
    'key'                   => 'group_1',
    'title'                 => 'My Group',
    'fields'                => [
        [
            'key'                 => 'field_1',
            'label'               => 'Sub Title',
            'name'                => 'sub_title',
            'type'                => 'text',
            'prefix'              => '',
            'instructions'        => '',
            'required'            => 0,
            'conditional_logic'   => 0,
            'wrapper'             => [
                'width' => '',
                'class' => '',
                'id'    => '',
            ],
            'default_value'       => '',
            'placeholder'         => '',
            'prepend'             => '',
            'append'              => '',
            'maxlength'           => '',
            'readonly'            => 0,
            'disabled'            => 0,
            'wpml_cf_preferences' => 2, // This field ("Sub Title") will be translated.
        ],
    ],
    'location'              => [
        [
            [
                'param'    => 'post_type',
                'operator' => '==',
                'value'    => 'post',
            ],
        ],
    ],
    'menu_order'            => 0,
    'position'              => 'normal',
    'style'                 => 'default',
    'label_placement'       => 'top',
    'instruction_placement' => 'label',
    'hide_on_screen'        => '',
] );