'product', 'content_id' => (string) $id, 'content_name' => (string) $name, ); if ( $price !== null && $price !== '' ) { $item['content_price'] = (float) $price; } $item['num_items'] = max( 1, (int) $quantity ); if ( $group_id !== null && (string) $group_id !== '' ) { $item['content_group_id'] = (string) $group_id; } return $item; } function x_pixel_send_capi( $event_id, $params, $identifiers, $conversion_id, $source_url ) { $pixel_id = x_pixel_get_id(); $token = get_option( X_PIXEL_OPTION_CAPI, '' ); $code = x_pixel_event_code( $pixel_id, $event_id ); if ( $pixel_id === '' || $token === '' || $code === '' ) { return false; } $clean_ids = array(); foreach ( $identifiers as $key => $value ) { if ( is_string( $value ) && $value !== '' ) { $clean_ids[ $key ] = $value; } } if ( $clean_ids === array() ) { return false; } $body = array( 'conversions' => array( array( 'conversion_time' => gmdate( 'Y-m-d\TH:i:s.000\Z' ), 'event_id' => $code, 'event_source_url' => $source_url, 'conversion_id' => $conversion_id, 'identifiers' => array( $clean_ids ), ), ), ); if ( isset( $params['value'] ) ) { $body['conversions'][0]['value'] = (float) $params['value']; } if ( ! empty( $params['currency'] ) ) { $body['conversions'][0]['price_currency'] = strtoupper( (string) $params['currency'] ); } if ( isset( $params['num_items'] ) ) { $body['conversions'][0]['number_items'] = (int) $params['num_items']; } if ( ! empty( $params['contents'] ) && is_array( $params['contents'] ) ) { $body['conversions'][0]['contents'] = $params['contents']; } if ( ! empty( $params['description'] ) ) { $body['conversions'][0]['description'] = (string) $params['description']; } if ( ! empty( $params['search_string'] ) ) { $body['conversions'][0]['search_string'] = (string) $params['search_string']; } $response = wp_remote_post( 'https://ads-api.x.com/12/measurement/conversions/' . rawurlencode( $pixel_id ), array( 'timeout' => 5, 'blocking' => false, 'headers' => array( 'Content-Type' => 'application/json', 'X-Pixel-Token' => $token, ), 'body' => wp_json_encode( $body, JSON_PRESERVE_ZERO_FRACTION ), ) ); return ! is_wp_error( $response ); }