=== Asperor Merchant Feed Generator ===
Contributors: radilov
Tags: woocommerce, google merchant center, feed de productos, polylang, scheduled fetch
Requires at least: 6.8
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 2.1.0
License: GPLv2 or later

Genera feeds de productos válidos para Google Merchant Center desde tu catálogo real de WooCommerce — un único feed si la tienda es de un solo idioma, o uno por idioma si tienes Polylang instalado.

== Description ==

Asperor Merchant Feed Generator es el sucesor fusionado de dos plugins que antes eran independientes, **Asperor Multilanguage Merchant Feed** y **Asperor One Language Merchant Feed**. Los dos generaban el mismo tipo de feed con la misma lógica de fila por debajo; la única diferencia real era si el catálogo se repartía por idioma de Polylang o no. Mantenerlos como dos bases de código que evolucionaban por separado hacía que las mejoras llegaran a uno y no al otro — este plugin acaba con eso detectando Polylang en tiempo real y comportándose como cualquiera de los dos, desde una sola base de código:

* **Polylang instalado y configurado** — un feed por idioma, filtrado por el idioma real de Polylang de cada producto (no el idioma del panel de administración, que es justo lo que hace que Google for WooCommerce etiquete mal los catálogos multi-idioma).
* **Sin Polylang** — un único feed con todo el catálogo.

Endpoints REST públicos:

`/wp-json/asperor-merchant-feed-generator/v1/feed/{lang}`  (multi-idioma)
`/wp-json/asperor-merchant-feed-generator/v1/feed`         (un solo idioma)

Los sitios que migran desde cualquiera de los dos plugins anteriores pueden mantener sus fuentes de datos de Merchant Center ya dadas de alta sin cambios — los endpoints antiguos siguen funcionando como alias del mismo feed:

`/wp-json/b2b-merchant-feed/v1/feed/{lang}`             (antes Asperor Multilanguage Merchant Feed)
`/wp-json/asperor-primary-merchant-feed/v1/feed`        (antes Asperor One Language Merchant Feed)

= Características =

* Mapeo de categorías independiente del tipo de tienda: asigna cada categoría de producto de WooCommerce a la categoría de Google correcta desde una pantalla de administración, con búsqueda contra la taxonomía oficial completa de Google (incluida). Las categorías sin asignar envían `google_product_category` vacío, para que Google lo detecte solo a partir del título/descripción en vez de recibir una suposición equivocada. Override opcional por producto vía el meta `_amfg_google_category_override`.
* Ofertas reales por variación: los productos variables se convierten en una fila por cada variación publicada, enlazadas con `item_group_id` — el patrón correcto de Google Shopping para variantes de color/talla, en vez de enviar solo la primera variación.
* `brand`, `color`, `size`, `gender` y `age_group` se leen del nombre de atributo que realmente use la tienda (`pa_color`/`color`/`colour`/`pa_colore`, etc.), no de uno fijo. `gender`/`age_group` solo se envían para productos cuya categoría resuelta sea "Apparel & Accessories" — nunca un valor fijo por defecto.
* `mpn` se rellena automáticamente con el SKU del producto o la variación.
* Pantalla de administración ("Merchant Feed") con la(s) URL del feed, recuento de productos en vivo, mapeo de categorías y los pasos de configuración en Merchant Center.
* Totalmente traducible (cadenas fuente en inglés, traducción al español incluida).

== Requirements ==

* WordPress 6.8+
* WooCommerce
* Polylang — opcional, solo si quieres un feed por idioma.

== Installation ==

1. Sube el ZIP desde el admin de WordPress.
2. Activa Asperor Merchant Feed Generator.
3. Abre Merchant Feed en el menú del admin.
4. Asigna tus categorías de producto a la taxonomía de Google (recomendado — ver sección de mapeo de categorías).
5. Copia la(s) URL del feed en Google Merchant Center como fuente principal con recogida programada.

== Changelog ==

= 2.1.0 =
* Sin licencia activa, el feed ahora queda limitado a 5 productos (TSV igualmente válido, solo con menos catálogo) en vez de exportar toda la tienda gratis de forma indefinida.

= 2.0.0 =
* Fusión de "Asperor Multilanguage Merchant Feed" y "Asperor One Language Merchant Feed" en un solo plugin. Polylang ahora se detecta en tiempo real en vez de ser un requisito obligatorio: un feed por idioma si está presente, un único feed si no.
* Todo lo de Multilanguage Merchant Feed 1.2.0 (respaldos de color/mpn/brand) queda superado por los mecanismos más generales que ya tenía esta base de código (mapeo de categorías, detección de atributos por varios nombres) — ver más abajo.
* Añadidos alias de endpoint REST heredados (`b2b-merchant-feed/v1/...`, `asperor-primary-merchant-feed/v1/feed`) para que los sitios que migran desde cualquiera de los dos plugins anteriores mantengan sus fuentes de datos de Merchant Center funcionando sin tener que darlas de alta otra vez.

= 1.3.0 (como Asperor One Language Merchant Feed) =
* Mapeo de categorías independiente del tipo de tienda: una nueva pantalla de administración "Mapeo de categorías" permite asignar cada categoría de producto de WooCommerce a la categoría de Google correcta, con búsqueda contra la taxonomía oficial completa de Google (incluida). Sustituye al antiguo adivinador por palabras clave (solo ropa), que categorizaba mal en silencio cualquier producto de una tienda que no fuera de ropa (por ejemplo, enviaba artículos para mascotas o electrónica a Google como "Apparel & Accessories > Clothing").
* Las categorías sin asignar ahora envían google_product_category vacío en vez de una suposición equivocada, para que Google lo detecte a partir del título/descripción.
* gender y age_group ahora solo se envían para productos cuya categoría resuelta sea "Apparel & Accessories", y se leen de los atributos propios de género/grupo de edad del producto si existen — nunca un valor fijo por defecto.
* Override opcional por producto: asignar un meta con la categoría de Google para saltarse el mapeo en un producto concreto.

= 1.2.1 (como Asperor One Language Merchant Feed) =
* Variante de un solo idioma de Asperor Merchant Feed.
* Eliminada la dependencia de Polylang y el filtro por taxonomía language.
* Añadidas filas por variación con grupo, color y talla.
* Añadido product_type y endpoint público único.
