WordPress Gravity Forms obtiene valores de lista

2 minutos de lectura

¿Puede alguien indicarme cómo extraer valores de los formularios enviados que contienen campos de lista?

Estoy tratando de crear un formulario de publicación de front-end usando Gravity Forms, y luego hacer que los valores enviados se asignen a campos personalizados creados con Advanced Custom Fields.

Para campos normales, puede hacer esto con lo siguiente:

add_action("gform_after_submission_1", "acf_submission", 10, 2);

function acf_submission($entry, $form)
{
   $post_id = $entry["post_id"];
   update_field('field_###', $entry['#'], $post_id ); 
   update_field('field_###', $entry['#'], $post_id ); 
   update_field('field_###', $entry['#'], $post_id );  
}

Donde field_### es la clave de campo personalizado de ACF, entrada[‘#’] es el ID de campo de Gravity Forms, y $post_id es el ID de la publicación en la que desea actualizar/almacenar valores.

Usando la entrada[‘#’] funciona muy bien con campos normales (texto, párrafo, etc.), pero los campos de lista (repetidores) se almacenan de forma un poco diferente. En la base de datos, el valor se ve así (para un campo de lista que tiene 3 campos (columnas) y para alguien que hizo clic en el botón Agregar para agregar una instancia adicional del campo de lista:

a:2:{i:0;a:3:{s:4:"Column 1 Name";s:7:"value input";s:6:"Column 2 Name";s:34:"value input";s:11:"Column 3 Name";s:24:"value input";}i:1;a:3:{s:4:"Column 1 Name";s:11:"value input";s:6:"Column 2 Name";s:19:"value input";s:11:"Column 3 Name";s:22:"value input";}}

No puedo averiguar cómo extraer esos valores y asignarlos a los campos ACF. intenté entrar[‘#.#’] como lo haría para campos como la dirección, pero eso no funcionó.

avatar de usuario
leclaeli

Esta es una matriz serializada, por lo que puede usar la función php unserialize para extraer los valores.

$array_values = unserialize($entry['#']);  
print_r($array_values); //see what your values are.

Ahora que tiene sus valores, puede acceder a ellos en su nueva matriz $array_values. Obtener un valor de una matriz serializada en PHP

La información se puede encontrar en la Documentación de Gravity Form – GF_Field_List

$list_values = unserialize( rgar( $entry, '3' ) ); 

// You will get an array like below
$list_values = array(
  array(
    'Column 1' => 'one',
    'Column 2' => 'two',
    'Column 3' => 'three',
  ),
  array(
    'Column 1' => 'i',
    'Column 2' => 'ii',
    'Column 3' => 'iii',
  ),
  array(
    'Column 1' => '1',
    'Column 2' => '2',
    'Column 3' => '3',
  ),
);

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad