'Version' ) )['Version'] ); define( __NAMESPACE__ . '\FACTS', require __DIR__ . '/includes/facts.php' ); // Every key the plugin stores under, which uninstall.php reads too. define( __NAMESPACE__ . '\STORED', wp_json_file_decode( __DIR__ . '/assets/stored-keys.json', array( 'associative' => true ) ) ); require_once __DIR__ . '/includes/class-designer-data.php'; require_once __DIR__ . '/includes/class-settings.php'; require_once __DIR__ . '/includes/class-shirt-colors.php'; require_once __DIR__ . '/includes/class-mockups.php'; require_once __DIR__ . '/includes/class-product-settings.php'; require_once __DIR__ . '/includes/class-design-store.php'; require_once __DIR__ . '/includes/class-cart.php'; require_once __DIR__ . '/includes/class-order.php'; require_once __DIR__ . '/includes/class-onboarding.php'; require_once __DIR__ . '/includes/class-privacy.php'; require_once __DIR__ . '/includes/class-review-request.php'; require_once __DIR__ . '/includes/class-pro.php'; require_once __DIR__ . '/includes/class-admin-menu.php'; require_once __DIR__ . '/includes/class-overview.php'; require_once __DIR__ . '/includes/class-print-queue.php'; require_once __DIR__ . '/includes/class-dashboard-widget.php'; require_once __DIR__ . '/includes/class-order-milestones.php'; require_once __DIR__ . '/includes/class-quick-setup.php'; require_once __DIR__ . '/includes/class-deactivation-feedback.php'; add_action( 'plugins_loaded', static function () { if ( ! class_exists( 'WooCommerce' ) ) { return; } Settings::register(); Shirt_Colors::register(); Mockups::register(); Product_Settings::register(); Design_Store::register(); Cart::register(); Order::register(); Onboarding::register(); Privacy::register(); Review_Request::register(); Pro::register(); Admin_Menu::register(); Dashboard_Widget::register(); Order_Milestones::register(); Quick_Setup::register(); Deactivation_Feedback::register(); } ); add_action( 'init', static function () { if ( ! class_exists( 'WooCommerce' ) ) { return; } foreach ( array( 'designer', 'colors' ) as $name ) { $block = register_block_type( __DIR__ . '/build/' . $name ); if ( ! $block ) { continue; } // The designer's page script and the React/WordPress packages it needs load at the end of the // page, so they don't hold up its first paint (the server already rendered its layout). foreach ( $block->view_script_handles as $handle ) { wp_script_add_data( $handle, 'group', 1 ); } } } ); // Orders are read and written through WooCommerce's order API, so custom order tables are supported. add_action( 'before_woocommerce_init', static function () { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', FILE, true ); \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', FILE, true ); } } ); register_activation_hook( FILE, array( Onboarding::class, 'activate' ) ); register_deactivation_hook( FILE, static function () { wp_clear_scheduled_hook( 'printblob_cleanup_designs' ); } );