sanitize_text_field($data['conexion_openai'] ?? ''), 'registrar_meta_keys' => array_map('sanitize_text_field', $registrar_meta_keys), 'seccionesIA' => !empty($data['seccionesIA']) ? 1 : 0, 'seccion' => sanitize_text_field($data['seccion'] ?? '-1'), 'firmante' => intval($data['firmante'] ?? '-1'), 'estiloRefrito' => sanitize_text_field($data['estiloRefrito'] ?? ''), 'post_status' => sanitize_text_field($data['post_status'] ?? ''), 'post_date' => sanitize_text_field($data['post_date'] ?? ''), 'usar_campos_personalizados' => !empty($data['usar_campos_personalizados']) ? 1 : 0, 'generate_antetitulo' => $antetitulo_habilitado && !empty($data['generate_antetitulo']) ? 1 : 0, 'generate_subtitulo' => $subtitulo_habilitado && !empty($data['generate_subtitulo']) ? 1 : 0, 'enable_summary' => !empty($data['enable_summary']) ? 1 : 0, 'auto_tags' => !empty($data['auto_tags']) ? 1 : 0, 'deleteLinks' => !empty($data['deleteLinks']) ? 1 : 0, 'nofollow' => !empty($data['nofollow']) ? 1 : 0, 'tagsExistentes' => !empty($data['tagsExistentes']) ? 1 : 0, 'autoseo' => !empty($data['autoseo']) ? 1 : 0, 'cifras' => !empty($data['cifras']) ? 1 : 0, 'faq' => !empty($data['faq']) ? 1 : 0, 'cronologia' => !empty($data['cronologia']) ? 1 : 0, 'customTags' => sanitize_text_field($data['customTags'] ?? ''), 'fuente' => sanitize_text_field($data['fuente'] ?? ''), 'promptInjection_todo' => sanitize_text_field($data['promptInjection_todo'] ?? ''), 'promptInjection_antetitulo' => sanitize_text_field($data['promptInjection_antetitulo'] ?? ''), 'promptInjection_titulo' => sanitize_text_field($data['promptInjection_titulo'] ?? ''), 'promptInjection_subtitulo' => sanitize_text_field($data['promptInjection_subtitulo'] ?? ''), 'promptInjection_entradilla' => sanitize_text_field($data['promptInjection_entradilla'] ?? ''), 'promptInjection_refrito' => sanitize_text_field($data['promptInjection_refrito'] ?? ''), 'promptInjection_tags' => sanitize_text_field($data['promptInjection_tags'] ?? ''), ]; // Ahora sí manejar correctamente la clave API sin perderla if (strpos($api_key_nueva, $ofuscaApiKey) === false && strlen($api_key_nueva) > 10) { // Clave API nueva válida $settings['openai_apikey'] = $api_key_nueva; } else { // Conservar la clave API anterior claramente $settings['openai_apikey'] = $ajustes_previos['openai_apikey'] ?? ''; } update_option('aife_settings', $settings); wp_redirect(add_query_arg('settings-updated', 'true', admin_url('admin.php?page=aife_ajustes'))); exit; } add_action('admin_post_aife_guardar_ajustes', 'aife_guardar_ajustes_padre'); add_action( 'init', 'aife_registrar_meta_keys_dinamicamente' ); function aife_registrar_meta_keys_dinamicamente() { $registradas = get_option( 'aife_settings', [] ); $meta_keys = $registradas['registrar_meta_keys'] ?? []; if ( empty( $meta_keys ) || ! is_array( $meta_keys ) ) { return; } $html_fields = aife_html_fields(); // usa la función que ya tienes foreach ( $meta_keys as $meta_key ) { register_post_meta( 'post', $meta_key, [ 'type' => 'string', 'show_in_rest' => true, 'single' => true, 'sanitize_callback' => in_array( $meta_key, $html_fields, true ) ? 'aife_sanitize_html' // permite HTML : 'sanitize_text_field', // texto plano 'auth_callback' => function () { return current_user_can( 'edit_posts' ); }, ] ); } }