__( 'Advanced Custom Fields', 'advanced-form-integration' ), 'tasks' => array( 'update_field' => __( 'Update Field', 'advanced-form-integration' ), ), ); return $actions; } add_action( 'adfoin_action_fields', 'adfoin_acfac_action_fields' ); function adfoin_acfac_action_fields() { ?> 'postId', 'value' => __( 'Post ID', 'advanced-form-integration' ), 'description' => __( 'Required. A post ID (123), or ACF\'s own conventions: user_5, term_9, option.', 'advanced-form-integration' ), ), array( 'key' => 'selector', 'value' => __( 'Field Name or Key', 'advanced-form-integration' ), 'description' => __( 'Required. The ACF field\'s name (e.g. phone_number) or key (e.g. field_123).', 'advanced-form-integration' ), ), array( 'key' => 'value', 'value' => __( 'Value', 'advanced-form-integration' ), 'description' => __( 'Required.', 'advanced-form-integration' ), ), ); wp_send_json_success( $fields ); } add_action( 'adfoin_acfac_job_queue', 'adfoin_acfac_job_queue', 10, 1 ); function adfoin_acfac_job_queue( $data ) { adfoin_acfac_send_data( $data['record'], $data['posted_data'] ); } /* * Handles writing an ACF field value */ function adfoin_acfac_send_data( $record, $posted_data ) { if ( ! function_exists( 'update_field' ) ) { return; } $record_data = json_decode( $record['data'], true ); if ( isset( $record_data['action_data']['cl'] ) && adfoin_check_conditional_logic( $record_data['action_data']['cl'], $posted_data ) ) { return; } $field_data = isset( $record_data['field_data'] ) ? $record_data['field_data'] : array(); $task = isset( $record['task'] ) ? $record['task'] : ''; if ( 'update_field' !== $task ) { return; } $prepared_data = array(); foreach ( $field_data as $key => $value ) { if ( '' === $key ) { continue; } $parsed_value = adfoin_get_parsed_values( $value, $posted_data ); if ( '' === $parsed_value || null === $parsed_value ) { continue; } $prepared_data[ $key ] = $parsed_value; } $request_payload = $prepared_data; $response_body = array( 'success' => false ); $status_code = 400; if ( empty( $prepared_data['postId'] ) || empty( $prepared_data['selector'] ) || ! isset( $prepared_data['value'] ) ) { $response_body['message'] = __( 'Post ID, field name/key, and value are all required.', 'advanced-form-integration' ); } else { $updated = update_field( $prepared_data['selector'], $prepared_data['value'], $prepared_data['postId'] ); if ( $updated ) { $status_code = 200; $response_body['success'] = true; $response_body['message'] = __( 'Field updated successfully.', 'advanced-form-integration' ); } else { $response_body['message'] = __( 'Failed to update the field. Please verify the supplied post ID and field name/key.', 'advanced-form-integration' ); } } $log_args = array( 'method' => 'LOCAL', 'body' => $request_payload, ); $log_response = array( 'response' => array( 'code' => $status_code, 'message' => $response_body['message'], ), 'body' => $response_body, ); adfoin_add_to_log( $log_response, 'acfac', $log_args, $record ); }