get('products', ['status' => 'publish', 'per_page' => 100]); $cuw_map = UpsellService::buildProductMap(); $enriched = []; foreach ($products as $product) { // Get variations for variable products $variation_details = ($product->type === 'variable') ? (array) $woocommerce->get("products/{$product->id}/variations", ['per_page' => 50]) : []; // Combine upsell + cross-sell + CUW IDs $upsell_ids = !empty($product->upsell_ids) ? array_map('intval', (array) $product->upsell_ids) : []; $cross_sell_ids = !empty($product->cross_sell_ids) ? array_map('intval', (array) $product->cross_sell_ids) : []; $cuw_ids = $cuw_map[(int)$product->id] ?? []; $recommended_ids = array_values(array_unique(array_filter(array_merge( $upsell_ids, $cross_sell_ids, $cuw_ids )))); // Convert product to array and add fields $p = (array) $product; $p['variation_details'] = $variation_details; $p['cuw_ids'] = $cuw_ids; $p['recommended_ids'] = $recommended_ids; $enriched[] = $p; } echo json_encode($enriched); } catch (Exception $e) { echo json_encode([]); } }