¿Cómo agregar campos personalizados en ACF mediante programación?

2 minutos de lectura

Quiero agregar programáticamente una pestaña con un repetidor dentro, pero parece que no puedo encontrar una solución, busqué en Google todos los recursos disponibles pero aún no funciona.

Ya intenté usar acf_add_local_field_group y acf_add_local_field pero todavía no hay suerte.

Bueno, puedo crear una pestaña usando acf_add_local_field, pero cuando traté de agregar un elemento secundario, que en este caso es un repetidor O incluso un campo de texto, aún no funciona.

Aquí está mi código para crear una pestaña y su elemento secundario, pero el elemento secundario no funciona.

 acf_add_local_field(array(
'key' => 'field_1',
'label' => 'Sub Title',
'name' => 'sub_title',
'type' => '',
'parent' => 'field_5bd14c9349930',
'fields' => array (
    array(
            'key' => 'field_2',
            'label' => 'This is a test',
            'name' => 'my_test',
            'type' => 'text',
            )
        )
));

Deberías usar acf_add_local_field_group para construir todo el grupo de campo.

Aquí está el código adecuado para agregar un grupo y una pestaña personalizada con un solo campo repetidor dentro:

if( function_exists('acf_add_local_field_group') ):

acf_add_local_field_group(array (
    'key' => 'group_1',
    'title' => 'My Group',
    'fields' => array (
        array (
            'key' => 'field_unique_key',
            'label' => 'First Tab', 
            'name' => '',
            'type' => 'tab',
            'instructions' => '',
            'required' => 0,
            'conditional_logic' => 0,
            'wrapper' => array (
                'width' => '',
                'class' => '',
                'id' => '',
            ),
            'placement' => 'top',
            'endpoint' => 0,
        ),
        array (
            'key' => 'field_unique_key',
            'label' => 'Simple Repeater',
            'name' => 'simple_repeater',
            'type' => 'repeater',
            'instructions' => '',
            'required' => 0,
            'conditional_logic' => 0,
            'wrapper' => array (
                'width' => '',
                'class' => '',
                'id' => '',
            ),
            'collapsed' => '',
            'min' => 0,
            'max' => 10,
            'layout' => 'table',
            'button_label' => 'Add row',
            'sub_fields' => array ( // Here you can add as many subfields for this repeater as you want
                array (
                    'key' => 'field_unique_key',
                    'label' => 'Link',
                    'name' => 'link',
                    'type' => 'link', // example link type
                    'instructions' => 'Link name and URL',
                    'required' => 0,
                    'conditional_logic' => 0,
                    'wrapper' => array (
                        'width' => '',
                        'class' => '',
                        'id' => '',
                    ),
                    'return_format' => 'array',
                ),
            ),
        ),
    ),
    'location' => array (
        array (
            array (
                'param' => 'post_type',
                'operator' => '==',
                'value' => 'post',
            ),
        ),
    ),
    'menu_order' => 0,
    'position' => 'normal',
    'style' => 'default',
    'label_placement' => 'top',
    'instruction_placement' => 'label',
    'hide_on_screen' => '',
));

endif;

  • en el group_1 ¿Necesito agregar un atributo de nombre para poder recorrerlo?

    – desarrollador leonardo

    28 de octubre de 2018 a las 9:32

  • aunque no puedo usar la función have_rows() en la parte delantera.

    – desarrollador leonardo

    28 de octubre de 2018 a las 10:28

  • Esto no funciona para mí. ¿Alguien tiene un ejemplo de trabajo? Necesito que el grupo ACF aparezca también en el backend.

    – Floris

    7 de enero de 2020 a las 12:56

¿Ha sido útil esta solución?