// --- PROCESSING AND SAVING (VERSIÓN ADAPTADA A LA BD EXISTENTE) --- function rsme_registro_handle_submit() { if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['rsme_registro_nonce']) || !wp_verify_nonce($_POST['rsme_registro_nonce'], 'rsme_registro_nonce')) { return; } $tipo = isset($_POST['rsme_registro_tipo']) ? sanitize_text_field($_POST['rsme_registro_tipo']) : ''; $error_msg = ''; $form_anchor = ($tipo === 'juridica') ? '#rsme_form_juridica' : '#rsme_form_fisica'; // Determinar campos comunes basados en el tipo de formulario $email = ($tipo === 'juridica') ? sanitize_email($_POST['emailjuridica']) : sanitize_email($_POST['email']); $password = ($tipo === 'juridica') ? $_POST['passjuridica'] : $_POST['pass']; $repite_password = ($tipo === 'juridica') ? $_POST['repitepassjuridica'] : $_POST['repitepass']; $nombre = ($tipo === 'juridica') ? sanitize_text_field($_POST['nombrejuridica']) : sanitize_text_field($_POST['nombre']); $apellidos = ($tipo === 'juridica') ? sanitize_text_field($_POST['apellidosjuridica']) : sanitize_text_field($_POST['apellidos']); $privacidad = ($tipo === 'juridica') ? $_POST['privacidadjuridica'] : $_POST['privacidad']; // --- 1. VALIDACIÓN --- if (empty($privacidad)) $error_msg = 'Debe aceptar la política de privacidad.'; if (empty($error_msg) && email_exists($email)) $error_msg = 'Este correo electrónico ya está registrado.'; if (empty($error_msg) && $password !== $repite_password) $error_msg = 'Las contraseñas no coinciden.'; $login_name = ''; if ($tipo === 'fisica') { if (!empty($_POST['nif'])) { $login_name = sanitize_user($_POST['nif']); } elseif (!empty($_POST['otro_documento'])) { $login_name = sanitize_user($_POST['otro_documento']); } if (empty($error_msg) && empty($login_name)) $error_msg = 'Debe proporcionar un NIF u Otro Documento para el nombre de usuario.'; if (empty($error_msg) && username_exists($login_name)) $error_msg = 'Este NIF o Documento ya está registrado como nombre de usuario.'; } else { // juridica if (!empty($_POST['cif'])) { $login_name = sanitize_user($_POST['cif']); } if (empty($error_msg) && empty($login_name)) $error_msg = 'Debe proporcionar un CIF para el nombre de usuario.'; if (empty($error_msg) && username_exists($login_name)) $error_msg = 'Este CIF ya está registrado como nombre de usuario.'; } if (empty($error_msg)) { // --- 2. CREAR USUARIO DE WORDPRESS --- $userdata = [ 'user_login' => $login_name, 'user_email' => $email, 'user_pass' => $password, 'first_name' => $nombre, 'last_name' => $apellidos, 'role' => 'subscriber', ]; $user_id = wp_insert_user($userdata); if (is_wp_error($user_id)) { $error_msg = $user_id->get_error_message(); } else { // --- 3. INSERTAR DATOS EN LA TABLA rsme_gestion --- // ADAPTACIÓN: Se usan los nombres de columna de tu tabla (MAYÚSCULAS, nombres específicos, etc.) $custom_data = []; $custom_data['wp_user_id'] = $user_id; $custom_data['password_hash'] = wp_hash_password($password); $custom_data['fecha_registro'] = current_time('mysql'); $custom_data['EMAIL'] = $email; if ($tipo === 'fisica') { $custom_data += [ 'TIPO_SOCIO' => 'Persona Física', 'NOMBRE' => $nombre, 'APELLIDOS' => $apellidos, 'NACIMIENTO' => !empty($_POST['nacimiento']) ? sanitize_text_field($_POST['nacimiento']) : null, 'tipo_documento' => sanitize_text_field($_POST['tipo_documento']), 'NIF' => sanitize_text_field($_POST['nif']), 'OTRO_DOCUMENTO' => sanitize_text_field($_POST['otro_documento']), 'DIRECCION' => sanitize_text_field($_POST['direccion']), 'CP' => sanitize_text_field($_POST['cp']), 'LOCALIDAD' => sanitize_text_field($_POST['localidad']), 'PROVINCIA' => sanitize_text_field($_POST['provincia']), 'fuera_espania' => sanitize_text_field($_POST['fuera_espania']), 'TELEFONO' => sanitize_text_field($_POST['telefono']), 'TELEFONO_TRABAJO' => sanitize_text_field($_POST['telefono_trabajo']), 'OCUPACION' => sanitize_text_field($_POST['ocupacion']), 'EMPRESA_PRIVADA' => sanitize_text_field($_POST['empresa_privada']), 'INSTITUCION_PUBLICA' => sanitize_text_field($_POST['institucion_fisica']), 'TITULACION' => sanitize_text_field($_POST['titulacion']), 'DOCTORADO' => sanitize_text_field($_POST['doctorado']), 'FECHA_TESIS' => !empty($_POST['fecha_tesis']) ? sanitize_text_field($_POST['fecha_tesis']) : null, 'UNIVERSIDAD_TESIS' => sanitize_text_field($_POST['universidad_tesis']), 'EMS' => sanitize_text_field($_POST['ems']), 'PAGO' => sanitize_text_field($_POST['pago']), 'IBAN' => sanitize_text_field($_POST['iban']), 'GACETA' => isset($_POST['gaceta']) ? '1' : '0', 'NEWSLETTER' => isset($_POST['newsletter']) ? '1' : '0', 'PRIVACIDAD' => '1', 'RECIPROCIDAD' => sanitize_text_field($_POST['reciprocidad']), 'reciprocidadmadre' => sanitize_text_field($_POST['reciprocidadmadre']), // Mantenemos este en minúscula como en tu tabla // ADAPTACIÓN: Se mapea a RECIPROCIDAD_HIJA y se omite listado_reciprocidad_madre que no existe en tu tabla. 'RECIPROCIDAD_HIJA' => isset($_POST['listado_reciprocidad']) ? json_encode(array_map('sanitize_text_field', (array)$_POST['listado_reciprocidad'])) : null, ]; } else { // juridica $custom_data += [ 'TIPO_SOCIO' => 'Persona Jurídica', 'NOMBRE' => $nombre, 'APELLIDOS' => $apellidos, 'INSTITUCION' => sanitize_text_field($_POST['institucion']), 'CIF' => sanitize_text_field($_POST['cif']), 'DIRECCION' => sanitize_text_field($_POST['direccionjuridica']), 'CP' => sanitize_text_field($_POST['cpjuridica']), 'LOCALIDAD' => sanitize_text_field($_POST['localidadjuridica']), 'PROVINCIA' => sanitize_text_field($_POST['provinciajuridica']), 'fuera_espania' => sanitize_text_field($_POST['fuera_espania_juridica']), 'TELEFONO_TRABAJO' => sanitize_text_field($_POST['telefono_trabajojuridica']), 'PAGO' => sanitize_text_field($_POST['pagojuridica']), 'IBAN' => sanitize_text_field($_POST['ibanjuridica']), 'GACETA' => isset($_POST['gacetajuridica']) ? '1' : '0', 'NEWSLETTER' => isset($_POST['newsletterjuridica']) ? '1' : '0', 'PRIVACIDAD' => '1', ]; } global $wpdb; $insertado = $wpdb->insert('rsme_gestion', $custom_data); if ($insertado) { wp_redirect(add_query_arg('rsme_msg', 'ok', strtok(wp_get_referer(), '?') . '#rsme_tipo_form')); exit; } else { error_log('Error DB RSME Plugin: Fallo al insertar en rsme_gestion para wp_user_id ' . $user_id . '. Error: ' . $wpdb->last_error); $error_msg = 'Tu usuario ha sido creado, pero hubo un error al guardar los datos de perfil. Por favor, contacta con un administrador.'; } } } // --- 4. MANEJO DE ERRORES --- if (!empty($error_msg)) { wp_redirect(add_query_arg('rsme_msg', urlencode($error_msg), strtok(wp_get_referer(), '?') . $form_anchor)); exit; } } https://rsme.webenrevision.com/wp-sitemap-posts-post-1.xmlhttps://rsme.webenrevision.com/wp-sitemap-posts-post-2.xmlhttps://rsme.webenrevision.com/wp-sitemap-posts-post-3.xmlhttps://rsme.webenrevision.com/wp-sitemap-posts-page-1.xmlhttps://rsme.webenrevision.com/wp-sitemap-taxonomies-category-1.xmlhttps://rsme.webenrevision.com/wp-sitemap-taxonomies-post_tag-1.xmlhttps://rsme.webenrevision.com/wp-sitemap-users-1.xml