=== 3DL Product Feed for Google Merchant Center ===
Contributors: halogen11
Tags: woocommerce, google merchant, product feed, shopping, ecommerce
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Requires Plugins: woocommerce
Stable tag: 1.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Generate a Google Merchant Center XML product feed from WooCommerce products and variations.

== Description ==

3DL Product Feed for Google Merchant Center creates a public XML feed for WooCommerce without requiring an external feed service.

**Free version includes**

* Google Merchant feed at `/3dl-gmc-feed.xml`
* Simple products and product variations
* Variant URLs with selected attributes
* WooCommerce built-in GTIN support plus common EAN/GTIN meta keys and custom keys
* Product-specific brand detection including WooCommerce Brands, with optional global fallback
* MPN detection from common/custom meta keys; optional SKU-as-MPN fallback
* EU unit pricing attributes from an explicit supported weight or volume product attribute
* Required main image with featured/variation/gallery fallback, plus up to 10 additional gallery images
* Optional Google-only title per product and variation
* Filters by SKU, category, price and weight/volume
* Optional exclusion of zero-price and out-of-stock items
* 30-minute file cache with automatic invalidation when products or feed settings change
* Built-in feed diagnostics: checked, included and skipped item counts with skip reasons
* Developer filters for Google Product Category, brand, GTIN, MPN and product URLs

**PRO version**

The separately sold 3DL Product Feed for WooCommerce adds Zboží.cz and Heureka.cz feeds, Google custom labels and licensed self-hosted updates. PRO uses the same `tdl_gmc_*` settings and Google title metadata, so upgrading does not require re-entering LITE settings.

== Installation ==

1. Install and activate WooCommerce.
2. Install **3DL Product Feed for Google Merchant Center**.
3. Open **3DL Google Feed** in WordPress admin.
4. Review brand and identifier settings if your store does not use standard WooCommerce fields.
5. Add `https://example.com/3dl-gmc-feed.xml` as a data source in Google Merchant Center.

The legacy `?zd_gmc=1` endpoint from older 1.1.x releases is kept for backward compatibility.

The plugin source language is English and a complete Czech (`cs_CZ`) translation is bundled in the plugin package.

== Frequently Asked Questions ==

= Why is a product missing from the feed? =

The feed intentionally skips items that Google Merchant Center could not use reliably. A product or variation must be published, purchasable, have a usable title and price, pass the configured filters, and have a usable main image. The image is taken in this order: variation image, product featured image, then the first product gallery image. Products without any usable image are not emitted. Zero-price items are excluded by default; out-of-stock items remain in the feed as `out_of_stock` unless you enable their exclusion.

Invalid GTIN/EAN values are omitted from the XML instead of being sent to Google. An invalid GTIN by itself does not automatically remove the product from the feed.

The **Feed diagnostics** section in the plugin admin shows how many candidate items were checked, how many were included, how many were skipped, and the skip reasons from the last generated feed. Use **Regenerate feed & diagnostics** after making catalogue changes when you want fresh counts immediately.

= Does the plugin support WooCommerce's built-in GTIN field? =

Yes. The WooCommerce product global unique ID is checked first when the installed WooCommerce version provides it.

= Does SKU automatically become MPN? =

No. SKU and MPN are not necessarily the same identifier. You can enable **Use SKU as MPN** if that is true for your catalogue.

= How is brand detected? =

The plugin checks product-specific brand/manufacturer metadata, WooCommerce Brands (`product_brand`) and common brand attributes. A manually configured global fallback can be used when needed.

= How do I set Google Product Category? =

Google Product Category is not hardcoded. Advanced users can provide it per product with the `tdl_gmc_google_category` filter.

= Can LITE and PRO be active together? =

They should not generate the same endpoint at the same time. LITE 1.2.0 automatically pauses its feed functionality when the PRO plugin is active, while preserving all settings.

== Changelog ==

= 1.2.0 =
* Updated plugin metadata for current WordPress and WooCommerce releases.
* Added 30-minute file cache with automatic invalidation after product and feed-setting changes.
* Added optional Google-only titles for products and variations.
* Added product-specific brand detection including WooCommerce Brands.
* Added safer MPN handling; SKU is no longer treated as MPN unless explicitly enabled.
* Tightened GTIN validation to GTIN-8, GTIN-12, GTIN-13 and GTIN-14, including GS1 check digits and Google-restricted prefixes.
* Improved variation GTIN fallback to the parent product.
* Improved variant URLs and variant titles.
* Added filters by SKU, category, price and weight/volume.
* Improved unit-pricing output and XML text cleanup; generic WooCommerce shipping/product weight is no longer assumed to be net unit-pricing quantity.
* Removed store-specific brand/category/text cleanup from the public plugin.
* Added safe LITE/PRO coexistence: LITE pauses when PRO is active.
* Products without any usable image are skipped because Google requires image_link for every item.
* Added an admin explanation of inclusion/skipping rules, including missing images and invalid GTIN values.
* Added feed diagnostics with included/skipped counts and per-reason breakdown, plus a manual regenerate action.
* Switched all plugin UI source strings to English and bundled a complete Czech (cs_CZ) translation.

= 1.1.7 =
* Previous WordPress.org release.
* Google Merchant XML feed with variants, GTIN/EAN mapping, unit pricing and additional images.

== Upgrade Notice ==

= 1.2.0 =
Major maintenance release for current WordPress/WooCommerce, improved identifiers, caching, filtering and clean LITE-to-PRO compatibility.
