# XShop – Compatibility ## 1. Tested Up To (M4: 2026-09-13) | Dependency | Minimum | Tested | |------------|---------|--------| | WordPress | 6.4 | 7.1 | | WooCommerce| 8.0 | 11.1.0 | | PHP | 8.2 | 8.2.12, 8.3 recommended | | Elementor | 3.15 (optional) | 3.2x | | Gutenberg | WP bundled | — | | Browsers | last 2 versions | 360/390/768/1024/1280/1440 via Playwright + CSS | ## 2. WordPress APIs Used - Theme support: `add_theme_support('title-tag','post-thumbnails','html5','custom-logo','woocommerce'...)` - Menus/sidebars/widgets: `register_nav_menus`, `register_sidebar`, `widgets_init`. - Settings: `register_setting` + single option `xshop_settings` (Settings API). - Customizer: `customize_register` for preview (typography/colours). - REST: `register_rest_route` (namespace `xshop/v1`). ## 3. WooCommerce Integration (M4) - `add_theme_support('woocommerce')` + wrappers, loop `xshop-products`, toolbar, `product.js` conditional, `search.js`+`filter.js` front-end (DOM guard). - REST: `xshop/v1/search` + `xshop/v1/products` (shared `ProductQuery`), HPOS via `wc_get_products`/`WP_Query`, no raw SQL. - Overrides (4): `content-product.php 3.6.0`, `archive-product.php 3.4.0` (now with `xshop-shop` layout + `product-filters` sidebar/drawer + `pre_get_posts` no-JS fallback), `content-single-product.php 3.6.0`, `single-product.php 1.6.4`. ## 4. HPOS - Uses `wc_get_products` CRUD, not direct post table writes. Compatible with High-Performance Order Storage. No direct `wp_posts` manipulation for orders. ## 5. Elementor - Widgets registered via `\Elementor\Plugin::instance()->widgets_manager->register` if Elementor active. Namespaced `XShop\Core\Elementor\Widgets\*`. No hard dependency – `is_plugin_active` guard. ## 6. Gutenberg - Block styles via `register_block_style`, theme.json opt-in later. No classic-editor dependency. ## 7. Multisite - Not primary target; options are per-site (no network options in v1). ## 8. Upgrade Notes - Template version bumps checked via `WC template version` comment. Override only where necessary; changelog notes any override update.