includes(); $this->init_hooks(); } /** * Include required files. */ private function includes() { require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-db.php'; require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-tracking.php'; require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-emails.php'; require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-privacy.php'; require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-mailjet.php'; if ( is_admin() ) { require_once MAPLE_CARTS_PATH . 'includes/class-maple-carts-admin.php'; } } /** * Initialize hooks. */ private function init_hooks() { register_activation_hook( MAPLE_CARTS_FILE, [ 'Maple_Carts_DB', 'activate' ] ); register_deactivation_hook( MAPLE_CARTS_FILE, [ $this, 'deactivate' ] ); add_action( 'plugins_loaded', [ $this, 'on_plugins_loaded' ] ); add_action( 'before_woocommerce_init', [ $this, 'declare_hpos_compatibility' ] ); } /** * On plugins loaded. */ public function on_plugins_loaded() { if ( ! class_exists( 'WooCommerce' ) ) { add_action( 'admin_notices', [ $this, 'woocommerce_missing_notice' ] ); return; } // Initialize components. Maple_Carts_Tracking::instance(); Maple_Carts_Emails::instance(); Maple_Carts_Privacy::instance(); Maple_Carts_Mailjet::instance(); if ( is_admin() ) { Maple_Carts_Admin::instance(); } // Load textdomain. load_plugin_textdomain( 'maple-carts', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); } /** * Deactivation. */ public function deactivate() { wp_clear_scheduled_hook( 'maple_carts_send_emails' ); wp_clear_scheduled_hook( 'maple_carts_cleanup' ); } /** * HPOS compatibility. */ public function declare_hpos_compatibility() { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', MAPLE_CARTS_FILE, true ); } } /** * WooCommerce missing notice. */ public function woocommerce_missing_notice() { ?>