feat: Add product images support with WP Media Library integration

- Add WP Media Library integration for product and variation images
- Support images array (URLs) conversion to attachment IDs
- Add images array to API responses (Admin & Customer SPA)
- Implement drag-and-drop sortable images in Admin product form
- Add image gallery thumbnails in Customer SPA product page
- Initialize WooCommerce session for guest cart operations
- Fix product variations and attributes display in Customer SPA
- Add variation image field in Admin SPA

Changes:
- includes/Api/ProductsController.php: Handle images array, add to responses
- includes/Frontend/ShopController.php: Add images array for customer SPA
- includes/Frontend/CartController.php: Initialize WC session for guests
- admin-spa/src/lib/wp-media.ts: Add openWPMediaGallery function
- admin-spa/src/routes/Products/partials/tabs/GeneralTab.tsx: WP Media + sortable images
- admin-spa/src/routes/Products/partials/tabs/VariationsTab.tsx: Add variation image field
- customer-spa/src/pages/Product/index.tsx: Add gallery thumbnails display
This commit is contained in:
Dwindi Ramadhana
2025-11-26 16:18:43 +07:00
parent 909bddb23d
commit f397ef850f
69 changed files with 12481 additions and 156 deletions

View File

@@ -3,7 +3,7 @@
* Plugin Name: WooNooW
* Description: The modern experience layer for WooCommerce (no migration, no risk).
* Version: 0.1.0
* Author: Dewe
* Author: WooNooW
* Requires Plugins: woocommerce
*/
@@ -38,10 +38,9 @@ add_action('plugins_loaded', function () {
WooNooW\Core\Bootstrap::init();
});
register_activation_hook(__FILE__, function () {
update_option('woocommerce_custom_orders_table_enabled', 'yes');
update_option('woocommerce_custom_orders_table_migration_enabled', 'yes');
});
// Activation/Deactivation hooks
register_activation_hook(__FILE__, ['WooNooW\Core\Installer', 'activate']);
register_deactivation_hook(__FILE__, ['WooNooW\Core\Installer', 'deactivate']);
// Dev mode filters removed - use wp-config.php if needed:
// add_filter('woonoow/admin_is_dev', '__return_true');