Introduccion
Automatizar la publicación de productos en PrestaShop mediante una API es una de las soluciones más eficientes cuando gestionamos catálogos desde sistemas externos (ERP, proveedores, marketplaces, dropshipping, etc.). Este tipo de integración permite ahorrar tiempo, reducir errores manuales y mantener el inventario sincronizado de forma dinámica.
En este artículo, aprenderás cómo automatizar la creación de productos en PrestaShop consumiendo una API externa, paso a paso, con ejemplos de código en PHP, manejo de imágenes, categorías y stock.
- ¿Qué tipo de API vamos a consumir?
Para este ejemplo, trabajaremos con una API REST externa (JSON), que podría ser:
- Una API de proveedor que ofrece productos con nombre, precio, stock e imágenes
- Un middleware que consolida datos de varias fuentes
- Una hoja de cálculo publicada vía API (Google Sheets, Airtable, etc.)
Ejemplo de respuesta JSON:
[ { "sku": "CAM-001", "name": "Camiseta Azul", "price": 14.95, "stock": 25, "category": "Camisetas", "image_url": "https://cdn.tienda.com/img/cam001.jpg" } ]
- Requisitos previos en PrestaShop
- Acceso al entorno con PHP y base de datos
- Categorías ya creadas (puedes crear dinámicamente si es necesario)
- Conocimiento de estructuras de PrestaShop: ps_product, ps_product_lang, ps_product_shop, ps_category_product, ps_image, ps_stock_available
- Crear el script PHP para importar desde API
<?php
require(dirname(__FILE__).’/config/config.inc.php’);
require(dirname(__FILE__).’/init.php’);
$api_url = ‘https://api.proveedor.com/productos’;
$response = Tools::file_get_contents($api_url);
$productos = json_decode($response, true);
foreach ($productos as $item) {
$product = new Product();
$product->reference = $item[‘sku’];
$product->price = $item[‘price’];
$product->id_tax_rules_group = 1;
$product->active = 1;
$product->id_category_default = 5; // ID de categoría ya existente
foreach (Language::getLanguages() as $lang) {
$product->name[$lang[‘id_lang’]] = $item[‘name’];
$product->link_rewrite[$lang[‘id_lang’]] = Tools::link_rewrite($item[‘name’]);
}
$product->add();
// Relación categoría
$product->addToCategories([5]);
// Stock
StockAvailable::setQuantity($product->id, 0, $item[‘stock’]);
// Imagen
if (!empty($item[‘image_url’])) {
$image = new Image();
$image->id_product = $product->id;
$image->position = Image::getHighestPosition($product->id) + 1;
$image->cover = true;
$image->add();
$image_path = $image->getPathForCreation().’.jpg’;
file_put_contents($image_path, file_get_contents($item[‘image_url’]));
ImageManager::resize($image_path, $image->getPathForCreation().’-large_default.jpg’, 800, 800);
}
}
echo «Productos importados correctamente.»;
?>
- Automatizar la ejecución con cron
Puedes ejecutar el script con una tarea programada para que se actualice cada día:
0 3 * * * php /var/www/html/importar_api.php
Esto te permite modificar precios solo de productos que cumplen con ciertos metadatos personalizados.
- Validaciones y controles adicionales
- Verifica si el producto ya existe por reference antes de crearlo
- Implementa logs de errores o registros de importación
- Puedes usar Tools::log() o escribir en un archivo de texto
if (Product::getIdByReference($item['sku'])) {
continue; // Ya existe, saltar
}
- Casos avanzados y mejoras
Mejora | Descripción |
Creación dinámica de categorías | Verificar si existe y crear con Category() |
Múltiples imágenes por producto | Iterar y agregar imágenes extra |
Precios por combinación | Usar ProductAttribute si hay tallas, colores |
Logs a base de datos | Registrar procesos en una tabla custom_log |
Sincronización bidireccional | Si tu tienda envía datos al sistema externo |
- Consideraciones de rendimiento
- Usa paginación si la API devuelve muchos productos
- Cachea las imágenes si vienen de CDN lentos
- Usa índices en reference para acelerar validaciones
- Evita timeouts: divide la carga en bloques si hay muchos productos
Conclusión
Automatizar la publicación de productos en PrestaShop mediante una API es una estrategia ideal para tiendas que dependen de fuentes externas de inventario o que actualizan su catálogo con frecuencia.
Con un simple script en PHP que consuma una API JSON y utilice las clases nativas de PrestaShop, puedes mantener sincronizado tu catálogo sin esfuerzo manual. Además, puedes escalar este sistema fácilmente con validaciones, cron jobs, logs y adaptaciones según tu flujo de negocio.