Importador de tarifas para el plugin «Correos Oficial»

Autor: Luis Muñoz
php code
[show-code]

Tutorial para importar tarifas al plugin “Correos Oficial” por peso o por coste, con o sin clases.

Qué hace y por qué

El plugin de Correos no trae importador. Este método añade una pantalla en WooCommerce Correos Importar tarifas para cargar miles de reglas desde CSV directamente al método de envío (por zona), sin tocar nada más.

Requisitos

  • WooCommerce activo.
  • Plugin Correos Oficial activo.
  • Acceso admin y WPCodeBox (o tu sistema de snippets) para pegar el código o acceso al archivo function.php
  • Tus tarifas en CSV con columnas:
    from,to,cost,condition,class

Qué permite

  • Criterio: por peso (condition=weightkg) o por coste del carrito (condition=cost).
  • Clases de envío: sin clases (productswithoutclass) o con clases (slug o “especiales”: allproducts para “pedido con varias clases”).
  • Modos: Añadir (no borra, añade) o Reemplazar (borra solo las reglas del método elegido).

Instalación del importador

  • Copia y pega el snippet PHP en WPCodeBox (o tu gestor de snippets) y actívalo.
    Archivo: importar tarifas Correos.php

Cómo preparar los CSV

A) Por peso (recomendado para paquetería)

  • Columnas: from,to,cost,condition,class
  • condition=weightkg
  • class=productswithoutclass
  • Rangos contiguos (kg): 0→1, 1→2, …
    Ejemplo:
from,to,cost,condition,class
0,1,3.21,weightkg,productswithoutclass
1,2,3.50,weightkg,productswithoutclass
2,3,3.71,weightkg,productswithoutclass

B) Por coste del carrito

  • Columnas iguales.
  • condition=cost
  • from/to en .

Ejemplo (umbral de gratis ≥50€):

from,to,cost,condition,class
0,30,9.99,cost,productswithoutclass
30,50,5.99,cost,productswithoutclass
50,999999,0.00,cost,productswithoutclass

C) Con clases de envío (opcional en otras tiendas)

  • class = slug de tu clase (p.ej. frio), o especiales:
    • productswithoutclass (productos sin clase)
    • allproducts (pedido con varias clases: fallback)

Consejo: importa primero las reglas específicas (por clase), después un fallback allproducts (quedan al final).

Uso paso a paso

  1. Crea/abre la zona y añade el método de Correos según las opciones del plugin de Correos (Paq Estándar Domicilio, Paq Ligero…).
  2. Ve a WooCommerce Correos Importar tarifas.
  3. Selecciona zona y método (Instancia: N). Fíjate en el ID de la zona, que tienes que seleccionar la instancia que le corresponda a ese ID
  4. Elige Añadir o Reemplazar.
  5. Sube el CSV
  6. Importar.

Nota: para la siguiente importación, vuelve a cargar/refrescar la página del importador.

Prompts listos para pedir a la IA los CSV desde Excel

A) Prompt por peso

Lee el Excel NOMBRE.xlsx, hoja HOJA. Genera CSV con columnas from,to,cost,condition,class para “Correos Oficial”.
Detecta tramos “Hasta X Kg” y construye intervalos: 0→1, 1→2, …
condition=weightkg, class=productswithoutclass, decimales con punto.
Un CSV por destino (Z1, Z2, Z3, Z3+, Baleares/Ceuta/Melilla, Canarias, Portugal o países AT, DE, … EU1, EU2).
Borra filas sin precio. Devuélvelos y empaquétalos en un ZIP para descargarlo.

B) Prompt por coste

Lee NOMBRE.xlsx, hoja HOJA. Genera CSV from,to,cost,condition,class por coste del carrito.
Define rangos de € (p.ej. 0–30, 30–50, ≥50 gratis).
condition=cost, class=productswithoutclass, decimales con punto.
Un CSV por zona/destino. Devuélvelos en un ZIP.

(Opcional) Si hay clases: añade CSV duplicados con class=frio, class=pesado y un fallback class=allproducts.

Prioridades y mezcla de criterios

  • Evita mezclar peso y coste en el mismo método: podrías sumar importes.
  • Si vas a cambiar de criterio, usa Reemplazar.
  • Para mantener dos lógicas, crea dos métodos distintos en la misma zona.

Diagnóstico (sin tocar la BD)

URLs útiles (estando logueado como admin y con snippets de diagnóstico activos):

  • Listar zonas/métodos/instancias: /wp-admin/?correos_diag=1
  • Ver reglas de un método: /wp-admin/?dump_rules=1&id=INSTANCIA
  • Limpiar caché de envíos: /wp-admin/?flush_ship=1

Problemas típicos

  • Instancia 0 en selector → método fantasma; añade/guarda el método real en la zona y vuelve.
  • Modal no muestra cambios → limpia caché de envíos (§8).
  • Error SQL → el importador lo muestra; revisa separador decimal (punto) y cabecera.
  • Duplicados → usa Reemplazar.
  • No aplica clase esperada → verifica class del CSV (slug correcto o productswithoutclass).