WordPress/WooCommerce plugin called studiou-wc-free-photo-product (QDR - Studiou WC Free Photo Product) v1.0.3. Allows publishing special variable products where customers upload custom raw images to be printed for a price.
studiou_media_category on attachment post typeStudiou_WC_Free_Photo_Product in root plugin fileSTUDIOU_WCFPP_studiou-fpp-studiouWcfppFront (frontend), studiouWcfpp (admin)studiou-wcfpp-front-nonce (frontend), studiou-wcfpp-nonce (admin)studiou-wc-free-photo-productStudiou_WC_FPP_DB - Custom table CRUD, media category taxonomyStudiou_WC_FPP_Product - WC product data tab, product metaStudiou_WC_FPP_Upload - Chunked upload AJAX, file assembly, attachment creationStudiou_WC_FPP_Single_Product - Upload area on product page (woocommerce_single_product_summary priority 35), WC session storage for file data, validates upload on add-to-cartStudiou_WC_FPP_Shortcode - [studiou_free_photo_product id="X"] renders product with WC native variation formStudiou_WC_FPP_Cart - Reads file data from WC session via woocommerce_add_cart_item_data, order item meta, order linkingStudiou_WC_FPP_Admin - Summary page, status management, ZIP downloadwoocommerce_single_product_summary (priority 35)studiou_wcfpp_set_upload_session to store file ref in WC sessionwoocommerce_add_to_cart_validation checks WC session for uploaded filewoocommerce_add_cart_item_data reads file data from WC session, clears session after usewoocommerce_checkout_order_processedstudiou-wc-product-cat-manageif (!defined('WPINC')) { die; }wp_send_json_success / wp_send_json_error for all AJAX responses__() or esc_html_e() with text domainabsint(), sanitize_text_field(), sanitize_file_name()esc_html(), esc_attr(), esc_url(), wp_kses_post()php languages/generate-mo.php or wp i18n make-mo languages/register_activation_hookrequire_once for DB class (runs before plugins_loaded)wp-content/uploads/studiou-fpp-chunks/ (cleaned on deactivation)wp-content/uploads/YYYY/MM/free-photo/When changing JS or CSS files, always bump the plugin version in the main PHP file header AND the STUDIOU_WCFPP_VERSION constant to bust browser cache.