=== Skwirrel PIM sync for WooCommerce === Contributors: jkoomen Tags: woocommerce, sync, pim, skwirrel, product-sync Requires at least: 6.9 Tested up to: 7.0 Requires PHP: 8.3 Stable tag: 3.11.2 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Synchronises products from the Skwirrel PIM system to WooCommerce via a JSON-RPC 2.0 API. == Description == Skwirrel PIM sync for WooCommerce connects your WooCommerce webshop to the Skwirrel PIM system. Products, variations, categories, brands, manufacturers, images, and documents are synchronised automatically or on demand. **Features:** * Full and delta (incremental) product synchronisation * Simple and variable product support with ETIM classification for variation axes * Automatic category tree sync with parent-child hierarchy * Brand sync via WooCommerce native product_brand taxonomy * Manufacturer sync with dedicated product_manufacturer taxonomy * Product image and document import into the WordPress media library * Custom class attributes (alphanumeric, logical, numeric, range, date, multi) * Configurable product URL slugs (source field, suffix, update on re-sync) * GTIN and manufacturer product code search filter on the product list page * Scheduled synchronisation via WP-Cron or Action Scheduler * Manual synchronisation from the admin dashboard with live progress tracking * Date-grouped sync history (last 20 runs) * Stale product and category purge after full sync * Delete protection with warnings and automatic full re-sync * Multilingual support with 7 locales (nl_NL, nl_BE, de_DE, fr_FR, fr_BE, en_US, en_GB) * Optional integration with the WordPress 7.0 Connections Screen for centralised API key management **Requirements:** * WordPress 6.0 or higher * WooCommerce 8.0 or higher (9.6+ recommended for native brand support; tested up to 10.6) * PHP 8.3 or higher * An active Skwirrel account with API access == Installation == 1. Upload the plugin files to `/wp-content/plugins/skwirrel-pim-sync/`, or install the plugin directly through the WordPress plugin screen. 2. Activate the plugin through the 'Plugins' screen in WordPress. 3. Navigate to WooCommerce > Skwirrel Sync to configure the plugin. 4. Enter your Skwirrel API URL and authentication token. 5. Click 'Sync now' to start the first synchronisation. == Frequently Asked Questions == = Which Skwirrel API version is supported? = The plugin works with the Skwirrel JSON-RPC 2.0 API. = How often are products synchronised? = You can set an automatic schedule (hourly, twice daily, or daily) or synchronise manually from the settings page. = Are existing products overwritten? = The plugin uses the Skwirrel external ID as a unique key. Existing products are updated, not duplicated. = I use a media offload plugin (WP Offload Media, S3 Uploads, …) — will the sync delete my offloaded files? = No, the sync never invokes `wp_delete_attachment()` on a missing-file event in 3.8.0+. When the local file is gone, the plugin only clears its own Skwirrel-side meta keys from the WP attachment record so the next sync can download fresh; the WP record itself (and any remote copy your offload plugin manages) is left untouched. If you want to go a step further and have the sync **reuse** the existing WP attachment (no fresh download, no churn) when the local file is gone but the remote copy is fine, hook into the `skwirrel_wc_sync_attachment_is_valid` filter. The simplest implementation as a mu-plugin: `