From 7e1830bef769b6d3712e8dcfcf60e95c4e0d5968 Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Fri, 5 Dec 2025 15:29:00 -0300 Subject: [PATCH 1/3] add id-value shape for compiled fields, use it on webhooks --- .../packages/forms/src/contact-form/class-feedback.php | 5 ++++- .../packages/forms/src/service/class-form-webhooks.php | 7 +------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/projects/packages/forms/src/contact-form/class-feedback.php b/projects/packages/forms/src/contact-form/class-feedback.php index 474ec2acba86c..2b287de1426e3 100644 --- a/projects/packages/forms/src/contact-form/class-feedback.php +++ b/projects/packages/forms/src/contact-form/class-feedback.php @@ -625,7 +625,10 @@ public function get_compiled_fields( $context = 'default', $array_shape = 'all' $compiled_fields[ $field->get_key() ] = $field->get_render_value( $context ); break; case 'label-value': - $compiled_fields[ $field->get_label( $context, $count_field_labels[ $label ] ) ] = $field->get_render_value( $context ); + $compiled_fields[ $field->get_label( $context, $count_field_labels[ $label ] ) ] = $field->get_render_value( $context ); + break; + case 'id-value': + $compiled_fields[ $field->get_form_field_id() ] = $field->get_render_value( $context ); break; } } diff --git a/projects/packages/forms/src/service/class-form-webhooks.php b/projects/packages/forms/src/service/class-form-webhooks.php index 3f8baa193f70f..c2e4690342b91 100644 --- a/projects/packages/forms/src/service/class-form-webhooks.php +++ b/projects/packages/forms/src/service/class-form-webhooks.php @@ -258,11 +258,6 @@ private function send_webhook( $data, $webhook ) { * @return array The form data key/value pairs. */ private function get_form_data( $feedback ) { - $fields = array(); - foreach ( $feedback->get_fields() as $field ) { - $fields[ $field->get_form_field_id() ] = $field->get_value(); - } - - return $fields; + return $feedback->get_compiled_fields( 'webhook', 'id-value' ); } } From 61abd772eadb6fff6828b4c4ae4fe6013383c0bd Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Sun, 7 Dec 2025 13:07:34 -0300 Subject: [PATCH 2/3] add tests for id-value data shape for get_compiled_fields --- .../tests/php/contact-form/Feedback_Test.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/projects/packages/forms/tests/php/contact-form/Feedback_Test.php b/projects/packages/forms/tests/php/contact-form/Feedback_Test.php index 0e2bbf411e486..bb4146a734942 100644 --- a/projects/packages/forms/tests/php/contact-form/Feedback_Test.php +++ b/projects/packages/forms/tests/php/contact-form/Feedback_Test.php @@ -1867,6 +1867,11 @@ public static function get_compiled_fields_data_provider() { ), 'message' => 'Compiled fields should return only labels as indexed array.', ), + 'id-value_format' => array( + 'format' => 'id-value', + 'expected' => array(), // Rebuilt dynamically in the test with actual form_id + 'message' => 'Compiled fields should return field IDs mapped to values.', + ), ); } @@ -1906,6 +1911,17 @@ public function test_get_compiled_fields_shapes( $format, $expected, $message ) // Test the specified format $compiled_fields = $response->get_compiled_fields( 'default', $format ); + // For id-value format, rebuild expected with actual form_id, there + // was no way of passing the form_id to the data provider. + if ( 'id-value' === $format ) { + $expected = array( + 'g' . $form_id . '-name' => $test_name, + 'g' . $form_id . '-email' => $test_email, + 'g' . $form_id . '-website' => $test_website, + 'g' . $form_id . '-message' => $test_message, + ); + } + $this->assertEquals( $expected, $compiled_fields, $message ); } From 05481d23555e3ed7381fbd3a2f64810631689dbc Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Sun, 7 Dec 2025 13:11:02 -0300 Subject: [PATCH 3/3] remove unnecessary method, we'll add it back if we need it --- .../forms/src/service/class-form-webhooks.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/projects/packages/forms/src/service/class-form-webhooks.php b/projects/packages/forms/src/service/class-form-webhooks.php index c2e4690342b91..5d599f0cf06eb 100644 --- a/projects/packages/forms/src/service/class-form-webhooks.php +++ b/projects/packages/forms/src/service/class-form-webhooks.php @@ -112,7 +112,7 @@ public function send_webhooks( $post_id, $fields, $is_spam, $entry_values ) { // return; } - $form_data = $this->get_form_data( $feedback ); + $form_data = $feedback->get_compiled_fields( 'webhook', 'id-value' ); // Iterate through each webhook and send the request foreach ( $webhooks as $webhook ) { @@ -250,14 +250,4 @@ private function send_webhook( $data, $webhook ) { return wp_remote_request( $url, $args ); } - - /** - * Gather fields key/value pairs from the Feedback object - * - * @param Feedback $feedback The Feedback instance containing submitted form data. - * @return array The form data key/value pairs. - */ - private function get_form_data( $feedback ) { - return $feedback->get_compiled_fields( 'webhook', 'id-value' ); - } }