$form_data WPForms form data. * @param object|null $process WPForms process object. */ public function map_process_result( SpamDecision $decision, array $form_data, $process ): void { if ( ! $this->should_block( $decision ) || ! is_object( $process ) ) { return; } $form_id = $this->get_form_id( $form_data ); $message = $this->get_visitor_message( $decision ); if ( method_exists( $process, 'add_error' ) ) { $process->add_error( $form_id, 'footer', $message ); return; } if ( ! property_exists( $process, 'errors' ) || ! is_array( $process->errors ) ) { return; } if ( ! isset( $process->errors[ $form_id ] ) || ! is_array( $process->errors[ $form_id ] ) ) { $process->errors[ $form_id ] = array(); } $process->errors[ $form_id ]['footer'] = $message; } /** * Get a WPForms form ID suitable for native process errors. * * @param array $form_data WPForms form data. */ private function get_form_id( array $form_data ): string { if ( isset( $form_data['id'] ) && is_scalar( $form_data['id'] ) && '' !== (string) $form_data['id'] ) { return (string) $form_data['id']; } return WPFormsContextFactory::DEFAULT_FORM_ID; } }