load_dependencies(); $this->define_admin_hooks(); $this->define_public_hooks(); } /** * Load the required dependencies for this plugin. */ public function load_dependencies() { require_once SHOPNOTIFY_PATH . 'includes/class-shopnotify-cart-tracker.php'; require_once SHOPNOTIFY_PATH . 'includes/class-shopnotify-process-checkout.php'; require_once SHOPNOTIFY_PATH . 'includes/class-shopnotify-cron.php'; require_once SHOPNOTIFY_PATH . 'includes/class-shopnotify-email-notification.php'; require_once SHOPNOTIFY_PATH . 'includes/class-shopnotify-whatsapp-notification.php'; require_once SHOPNOTIFY_PATH . 'admin/class-shopnotify-admin.php'; require_once SHOPNOTIFY_PATH . 'public/class-shopnotify-public.php'; } /** * Register all of the hooks related to the admin area functionality */ public function define_admin_hooks() { if ( ! is_admin() ) { return; } $plugin_admin = new SHPN\admin\Shopnotify_Admin(); // add admin menu. add_action( 'admin_menu', array( $plugin_admin, 'add_admin_menu' ) ); add_action( 'admin_init', array( $this, 'redirect_to_settings_page' ) ); } /** * Register all of the hooks related to the public-facing functionality */ public function define_public_hooks() { $public = new SHPN\public\Shopnotify_Public(); $cart_tracker = new Shopnotify_Cart_Tracker(); // cart actions. add_action( 'woocommerce_add_to_cart', array( $cart_tracker, 'update_cart_data' ) ); add_action( 'woocommerce_cart_item_removed', array( $cart_tracker, 'update_cart_data' ) ); add_action( 'woocommerce_cart_item_restored', array( $cart_tracker, 'update_cart_data' ) ); add_action( 'woocommerce_after_cart_item_quantity_update', array( $cart_tracker, 'update_cart_data' ) ); $process_checkout = new Shopnotify_Process_Checkout(); add_action( 'woocommerce_checkout_order_processed', array( $process_checkout, 'process_checkout' ), 10, 1 ); add_action( 'woocommerce_store_api_checkout_update_order_from_request', array( $process_checkout, 'update_checkout_data' ), 10, 1 ); add_action( 'woocommerce_order_status_changed', array( $process_checkout, 'update_order_status' ), 10, 3 ); add_action( 'init', array( $process_checkout, 'handle_returning_customer' ) ); $email = new Shopnotify_Email_Notification(); $whatsapp = new Shopnotify_Whatsapp_Notification(); $cron = new Shopnotify_Cron(); } /** * Redirect to settings page after plugin activation */ public function redirect_to_settings_page() { // Check if the plugin has just been activated. if ( 1 === (int) get_option( 'Shopnotify_redirect' ) ) { // Redirect to the settings page. update_option( 'Shopnotify_redirect', 0 ); wp_safe_redirect( admin_url( 'admin.php?page=shopnotify' ) ); exit; } } }