Icono ayuda

¿Necesitas ayuda?

Contactar con asesor por WhatsApp

Saltar al contenido

Ariapsa - Diseño de páginas web México

Cómo importar productos masivamente en WooCommerce de forma eficiente

Principales formas de importar productos masivamente en WooCommerce:

  1. Usando el Importador Nativo de WooCommerce:
  • Ve a Productos > Importar
  • Sube un archivo CSV con el formato correcto
  • Mapea las columnas según corresponda
  • Ejecuta la importación
  1. Usando el Script Personalizado (código proporcionado abajo):
  • Ofrece más control y validación
  • Maneja errores de forma más robusta
  • Permite personalizar el proceso según tus necesidades
  • Incluye validación de formato y manejo de categorías

 


<?php
// Agregar menú en el panel de administración
add_action('admin_menu', 'agregar_menu_importacion');
function agregar_menu_importacion() {
add_menu_page(
'Importar Productos',
'Importar Productos',
'manage_options',
'importador-productos',
'mostrar_pagina_importacion',
'dashicons-upload',
56
);
}
// Crear la página de importación
function mostrar_pagina_importacion() {
// Verificar permisos
if (!current_user_can('manage_options')) {
wp_die('No tienes permisos para acceder a esta página.');
}
// Procesar el formulario si se ha enviado
if (isset($_POST['submit']) && isset($_FILES['archivo_csv'])) {
if (!wp_verify_nonce($_POST['importacion_nonce'], 'importacion_productos')) {
wp_die('Error de seguridad');
}
$archivo = $_FILES['archivo_csv'];
$upload_dir = wp_upload_dir();
$archivo_temporal = $upload_dir['path'] . '/' . basename($archivo['name']);
if (move_uploaded_file($archivo['tmp_name'], $archivo_temporal)) {
$resultados = importar_productos_woocommerce($archivo_temporal);
unlink($archivo_temporal); // Eliminar archivo temporal después de la importación
}
}
?>
<div class="wrap">
<h1>Importador de Productos para WooCommerce</h1>
<div class="notice notice-info">
<p>El archivo CSV debe contener las siguientes columnas: nombre, precio, sku, descripcion, stock, categorias</p>
<p>Las categorías deben estar separadas por el símbolo | (pipe)</p>
</div>
<form method="post" enctype="multipart/form-data">
<?php wp_nonce_field('importacion_productos', 'importacion_nonce'); ?>
<table class="form-table">
<tr>
<th scope="row"><label for="archivo_csv">Seleccionar archivo CSV</label></th>
<td>
<input type="file" name="archivo_csv" id="archivo_csv" accept=".csv" required>
</td>
</tr>
</table>
<?php submit_button('Importar Productos'); ?>
</form>
<?php
// Mostrar resultados si existen
if (isset($resultados)) {
if (is_wp_error($resultados)) {
echo '<div class="notice notice-error"><p>' . esc_html($resultados->get_error_message()) . '</p></div>';
} else {
echo '<div class="notice notice-success"><p>';
echo 'Importación completada:<br>';
echo 'Productos importados: ' . esc_html($resultados['exito']) . '<br>';
echo 'Errores: ' . esc_html($resultados['errores']) . '<br>';
if (!empty($resultados['mensajes'])) {
echo 'Mensajes de error:<br>';
foreach ($resultados['mensajes'] as $mensaje) {
echo '- ' . esc_html($mensaje) . '<br>';
}
}
echo '</p></div>';
}
}
?>
</div>
<?php
}
// Función para validar el formato del CSV
function validar_formato_csv($archivo) {
$required_headers = array('nombre', 'precio', 'sku', 'descripcion', 'stock', 'categorias');
$handle = fopen($archivo, 'r');
$headers = fgetcsv($handle);
fclose($handle);
$missing_headers = array_diff($required_headers, array_map('strtolower', $headers));
if (!empty($missing_headers)) {
return new WP_Error(
'formato_invalido',
'Faltan las siguientes columnas requeridas: ' . implode(', ', $missing_headers)
);
}
return true;
}
// Función principal de importación
function importar_productos_woocommerce($archivo_csv) {
// Verificar que WooCommerce está activo
if (!class_exists('WC_Product')) {
return new WP_Error('error', 'WooCommerce debe estar instalado y activado');
}
// Validar formato
$validacion = validar_formato_csv($archivo_csv);
if (is_wp_error($validacion)) {
return $validacion;
}
// Abrir archivo CSV
$handle = fopen($archivo_csv, 'r');
if (!$handle) {
return new WP_Error('error', 'No se pudo abrir el archivo CSV');
}
// Leer encabezados
$headers = fgetcsv($handle);
// Array para almacenar resultados
$resultados = array(
'exito' => 0,
'errores' => 0,
'mensajes' => array()
);
// Procesar cada línea
while (($data = fgetcsv($handle)) !== FALSE) {
try {
$producto = array_combine($headers, $data);
// Crear nuevo producto
$new_product = new WC_Product_Simple();
// Configurar datos básicos
$new_product->set_name(sanitize_text_field($producto['nombre']));
$new_product->set_regular_price(floatval($producto['precio']));
$new_product->set_sku(sanitize_text_field($producto['sku']));
$new_product->set_description(wp_kses_post($producto['descripcion']));
$new_product->set_stock_quantity(intval($producto['stock']));
$new_product->set_manage_stock(true);
// Categorías si existen
if (!empty($producto['categorias'])) {
$categorias = explode('|', $producto['categorias']);
$cat_ids = array();
foreach ($categorias as $categoria) {
$term = term_exists(trim($categoria), 'product_cat');
if (!$term) {
$term = wp_insert_term(trim($categoria), 'product_cat');
}
if (!is_wp_error($term)) {
$cat_ids[] = is_array($term) ? $term['term_id'] : $term;
}
}
if (!empty($cat_ids)) {
$new_product->set_category_ids($cat_ids);
}
}
// Guardar producto
$new_product->save();
$resultados['exito']++;
} catch (Exception $e) {
$resultados['errores']++;
$resultados['mensajes'][] = "Error en línea " . ($resultados['exito'] + $resultados['errores']) . ": " . $e->getMessage();
}
}
fclose($handle);
return $resultados;
}

Este código modificado está listo para usar en Code Snippets. Las principales mejoras incluyen:

  1. Interfaz de administración:
  • Agrega un nuevo menú en el panel de WordPress
  • Incluye un formulario para subir archivos CSV
  • Muestra mensajes de éxito y error
  1. Seguridad mejorada:
  • Verificación de permisos
  • Nonces de WordPress
  • Sanitización de datos
  • Manejo seguro de archivos
  1. Funcionalidad:
  • Validación de archivos CSV
  • Manejo de errores mejorado
  • Limpieza automática de archivos temporales

Para usar este código:

  1. Ve a Code Snippets > Añadir nuevo
  2. Pega el código completo
  3. Activa el snippet
  4. Verás un nuevo menú "Importar Productos" en el panel de WordPress

El formato del CSV debe tener estas columnas:

  • nombre
  • precio
  • sku
  • descripcion
  • stock
  • categorias (separadas por |)

 

  1. Usando Plugins de Terceros:
  • Product Import Export for WooCommerce
  • WP All Import
  • WooCommerce CSV Import Suite

Recomendaciones para una importación eficiente:

  1. Preparación del CSV:
  • Asegúrate de que todas las columnas requeridas estén presentes
  • Usa el formato correcto para cada campo
  • Verifica la codificación del archivo (preferiblemente UTF-8)
  1. Optimización:
  • Importa en lotes pequeños (500-1000 productos)
  • Realiza la importación en horas de bajo tráfico
  • Desactiva temporalmente plugins innecesarios
  • Aumenta los límites de memoria si es necesario
  1. Validación:
  • Siempre haz una copia de seguridad antes de importar
  • Prueba primero con un archivo pequeño
  • Verifica los productos después de la importación

 

 

 

Ariapsa - Diseño de páginas web México
×

Iniciar Sesión

El registro de usuarios no está permitido.