2026-01-10 15:30:05 +01:00

58 lines
1.7 KiB
PHP

<?php
/**
* Products Action - Get products with enriched data
*/
require_once __DIR__ . '/../services/UpsellService.php';
/**
* Handle get_products action
*
* @return void
*/
function handleGetProducts(): void
{
try {
$woocommerce = getWooCommerce();
$products = $woocommerce->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([]);
}
}