58 lines
1.7 KiB
PHP
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([]);
|
|
}
|
|
}
|