Skip Navigation

[Resolved] I have a very strange problem with a taxonomy validation in a form

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 -
- 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 -

Supporter timezone: America/Sao_Paulo (GMT-03:00)

This topic contains 1 reply, has 2 voices.

Last updated by Mateus Getulio 5 months ago.

Assisted by: Mateus Getulio.

Author
Posts
#2708855

Hello,

I'm adding a taxonomy to a form, I would like to make sure that the user selects a value in the form but I can't, no error message appears (nor is it counted)

The code looks something like this: (this is a fragment, the complete code can be dizzying and I think it doesn't contribute much)

$tax = 'nacionalidad';
$msg = 'Por favor selecciona una nacionalidad';
if (empty($fields[$tax]['value'])) {
$errors[$tax] = $msg;
error_log('Debug: ok added.');
}
}

error_log('Debug: Finals ' . print_r($errors, true));

return array($fields, $errors);
}

It doesn't really work, if I print $errors it appears (I also print fields and the taxonomy appears)

[wpcf-nombre-en-anuncio] => Por favor ingresa un nombre para el anuncio
[wpcf-ciudad-seleccionable] => Por favor selecciona una ciudad
[wpcf-tipo-de-anuncio] => Por favor selecciona un tipo de anuncio
[wpcf-descripcion-personal-invitacion] => Por favor ingresa una breve descripción en el anuncio. Es el texto principal
[wpcf-valor-hora-de-atencion] => Por favor ingresa el valor por hora de atención
[wpcf-telefono-publico-anuncio] => Por favor ingresa un teléfono público para el anuncio
[wpcf-imagen-de-portada] => Por favor sube una imagen de portada
[wpcf-galeria-de-imagenes] => Por favor sube imágenes para la galería
[wpv-post-title] => Por favor coloca un nombre
[wpcf-9gt-5vx-f2-hd7rq] => Por favor adjunta un documento de identificación
[wpcf-declaracion-simple-anuncio] => Es necesario marcar
[nacionalidad] => Por favor selecciona una nacionalidad (this one is the taxonomy in form)

Everything seems good but it doesn't really work

I'm a little confused, I think maybe there is a bug and taxonomies cannot be validated

The full code might see confusing (I usually write on my own language) but there is if you can find something:

<!-- Please omite this if it is too confusing -->

add_filter('cred_form_validate', 'my_custom_validation', 10, 2);

function my_custom_validation($error_fields, $form_data) {
// Extracción de datos de campos y errores
list($fields, $errors) = $error_fields;

// Log de todos los campos recibidos en el formulario
error_log('Debug: Todos los campos recibidos: ' . print_r($fields, true));

// Validar solo para los formularios
$valid_ids = [12869, 12982];
if (in_array($form_data['id'], $valid_ids)) {
$required_fields = array(
'wpcf-nombre-en-anuncio' => 'Por favor ingresa un nombre para el anuncio',
'wpcf-ciudad-seleccionable' => 'Por favor selecciona una ciudad',
'wpcf-tipo-de-anuncio' => 'Por favor selecciona un tipo de anuncio',
'wpcf-edad' => 'Por favor ingresa tu edad',
'wpcf-comuna' => 'Por favor ingresa una comuna',
'wpcf-descripcion-personal-invitacion' => 'Por favor ingresa una breve descripción en el anuncio. Es el texto principal',
'wpcf-valor-hora-de-atencion' => 'Por favor ingresa el valor por hora de atención',
'wpcf-telefono-publico-anuncio' => 'Por favor ingresa un teléfono público para el anuncio',
'wpcf-imagen-de-portada' => 'Por favor sube una imagen de portada',
'wpcf-galeria-de-imagenes' => 'Por favor sube imágenes para la galería',
'wpv-post-title' => 'Por favor coloca un nombre',
'wpcf-9gt-5vx-f2-hd7rq' => 'Por favor adjunta un documento de identificación',
'wpcf-declaracion-simple-anuncio' => 'Es necesario marcar',
);

// Recorrer cada campo requerido y verificar si están vacíos
foreach ($required_fields as $field_key => $error_message) {
$value = $fields[$field_key]['value'];
if (is_array($value)) {
if (empty(array_filter($value))) {
$errors[$field_key] = $error_message;
}
} elseif (empty($value)) {
$errors[$field_key] = $error_message;
}
}

// Validar el campo wpcf-telefono-publico-anuncio
$telefono_campo = 'wpcf-telefono-publico-anuncio';
if (!empty($fields[$telefono_campo]['value'])) {
$telefono = $fields[$telefono_campo]['value'];
if (!preg_match('/^\+\d{11}$/', $telefono)) {
$errors[$telefono_campo] = 'Por favor ingresa teléfono siguiendo el siguiente formato: +56921130873';
}
}

// Validación específica para la taxonomía 'nacionalidad'
$tax = 'nacionalidad';
$msg = 'Por favor selecciona una nacionalidad';
if (empty($fields[$tax]['value'])) {
$errors[$tax] = $msg;
error_log('Debug: Error añadido porque nacionalidad está vacía.');
}
}

error_log('Debug: Contenido de errores al final de la validación: ' . print_r($errors, true));

// Devolver los datos de campo y errores actualizados
return array($fields, $errors);
}

Thanks, greetings

#2709118

Mateus Getulio
Supporter

Languages: English (English )

Timezone: America/Sao_Paulo (GMT-03:00)

Hello there,

I checked it and I wasn't able to spot anything wrong with the code. Validating using taxonomies is a possibility.

Does the rest of the validation work as intended?

Just as a test, what if you try to isolate the taxonomy validation into a different function and change its priority from 10 to 101 as in:

add_filter('cred_form_validate', 'my_custom_validation', 101, 2);

Also, are you able to create a test or staging environment to test this on minimal environment, with just Toolset plugins enabled and a default theme to see if this could be a conflict issue?

Thank you,
Mateus

#2709129

It doesn't work, the truth is it's very strange given that in debug the message was added correctly

But finally I decided to change the approach for that field (I am using a generic field, through hook I assign or create the term of that taxonomy)

Thanks for the support