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