=== 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.