ACTION
BO
Desde 1.5
actionProductDelete
~3 min de lectura
#Descripcion
Se ejecuta cuando un producto es eliminado desde el back office. Se dispara antes de que el producto sea borrado de la base de datos, permitiendo limpiar datos asociados del modulo, eliminar archivos relacionados o notificar a sistemas externos de la baja del producto.
Disparado por
-
AdminProductsController::processDelete()— controllers/admin/AdminProductsController.php
#Parametros
| Nombre | Tipo | Requerido | Descripcion |
|---|---|---|---|
| $id_product | int | Si | ID del producto que se va a eliminar |
| $product | Product | Si | Objeto Product que sera eliminado |
Retorno
void
Este hook no espera valor de retorno
#Ejemplo de codigo
mymodule.php
php
<?php
public function install()
{
return parent::install()
&& $this->registerHook('actionProductDelete');
}
mymodule.php
php
<?php
/**
* Hook actionProductDelete — producto eliminado
*/
public function hookActionProductDelete(array $params)
{
$idProduct = (int) $params['id_product'];
// Ejemplo: Limpiar datos del modulo asociados al producto
$tables = [
'mymodule_product_config',
'mymodule_product_seo',
'mymodule_product_sync',
'mymodule_price_history',
];
foreach ($tables as $table) {
Db::getInstance()->delete($table, 'id_product = ' . $idProduct);
}
// Ejemplo: Eliminar archivos personalizados del producto
$customDir = _PS_MODULE_DIR_ . $this->name . '/uploads/products/' . $idProduct;
if (is_dir($customDir)) {
Tools::deleteDirectory($customDir);
}
// Ejemplo: Notificar eliminacion a marketplace externo
Db::getInstance()->insert('mymodule_sync_queue', [
'action' => 'delete',
'id_product' => $idProduct,
'reference' => pSQL($params['product']->reference),
'processed' => 0,
'date_add' => date('Y-m-d H:i:s'),
]);
}
#Notas y gotchas
- ⚠️ El producto todavia existe en BD cuando se ejecuta este hook — puedes acceder a sus datos.
- ⚠️ Limpia siempre los datos de tu modulo asociados al producto para evitar datos huerfanos.
- ⚠️ Para capturar la eliminacion a nivel ORM, usa `actionObjectProductDeleteAfter`.
- ⚠️ La eliminacion masiva de productos tambien dispara este hook para cada producto individual.
- ⚠️ En PS 1.7+ los productos tambien pueden desactivarse en lugar de eliminarse — este hook no se dispara para desactivaciones.
#Relacionados
#Historial de versiones
| Version PS | Cambio |
|---|---|
| 1.5 | Introducido |
| 1.7 | Compatible con Symfony |
| 8.0 | Sin cambios. Compatible |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.