Magento – Cambiar los sku de los productos por lote con script php

Veamos el código necesario para cambiar los sku de los productos de Magento con un script de PHP.

Por diferentes motivos, nos puede interesar el SKU de productos dentro de nuestro Magento. Cuando solo es un par de ellos, no hay problem, pero cuando queremos cambiar centenares de productos, ya es otra historia. Por suerte, se puede hacer mediante un script .php

Primero preparemos cada uno de los pasos a seguir:

1. Creamos un fichero .csv llamado sku2sku.csv en la que una columna sea el actual sku, y la otra columna el sku nuevo

2. Almacenamos el fichero sku.csv en la raiz de nuestro magento

3. Creamos un fichero .php llamado sku2sku.php con el siguiente código y también lo almacenamos en la raiz (en el mismo lugar que el csv)

<?php 
include_once './app/Mage.php'; 
Mage::app();

$updates_file="./sku2sku.csv";

$sku_entry=array();

$updates_handle=fopen($updates_file, 'r');

if($updates_handle) { 
  while($sku_entry=fgetcsv($updates_handle, 1000, ",")) { 
    $old_sku=$sku_entry[0]; 
    $new_sku=$sku_entry[1]; 
    echo "<br />--> Updating ".$old_sku." to ".$new_sku." - "; 
    try { 
      $get_item = Mage::getModel('catalog/product')->loadByAttribute('sku', $old_sku); 
      if ($get_item) { 
        $get_item->setSku($new_sku)->save(); 
        echo "successful"; 
      } else { 
        echo "item not found"; 
      }
    } catch (Exception $e) { 
      echo "Cannot retrieve products from Magento: ". $e->getMessage() ." "; return; 
    }
  }
}
fclose($updates_handle);
?>

4. Ejecutamos el fichero, y esperamos. No es immediato y tarda su tiempo. Esto puede dar problemas, y es que pasado un tiempo, el servidor nos puede dar error por «Tiempo agotado»

Por último indicar que esto lo hacemos en local y con Magento 1.9.X, no sabemos si funciona en versiones superiores.

Espero que os sea de utilidad el artículo Veamos el código necesario para cambiar los sku de los productos de Magento con un script de PHP.

No nos hacemos responsables de que ejecutéis este código. Haced copias de seguridad de las bases de datos, y tened en cuenta que es cosa vuestra el ejecutarlo o no en vuestro servidor.


Más información