true ) ); } // Create logs table require_once WBC_PLUGIN_DIR . 'includes/class-wbc-logger.php'; WBC_Logger::create_table(); // Set default options $defaults = array( 'wbc_sync_frequency' => 'daily', 'wbc_enable_stock_sync' => 'yes', 'wbc_enable_price_sync' => 'yes', 'wbc_enable_order_sync' => 'yes', 'wbc_environment' => 'production', ); foreach ( $defaults as $option => $value ) { if ( get_option( $option ) === false ) { add_option( $option, $value ); } } // Schedule cron event if ( ! wp_next_scheduled( 'wbc_product_sync_event' ) ) { $frequency = get_option( 'wbc_sync_frequency', 'daily' ); wp_schedule_event( time(), $frequency, 'wbc_product_sync_event' ); } // Flush rewrite rules flush_rewrite_rules(); } register_activation_hook( __FILE__, 'wbc_activate' ); /** * Plugin deactivation hook */ function wbc_deactivate() { // Clear scheduled cron events $timestamp = wp_next_scheduled( 'wbc_product_sync_event' ); if ( $timestamp ) { wp_unschedule_event( $timestamp, 'wbc_product_sync_event' ); } // Flush rewrite rules flush_rewrite_rules(); } register_deactivation_hook( __FILE__, 'wbc_deactivate' ); /** * Load plugin text domain */ function wbc_load_textdomain() { load_plugin_textdomain( 'woo-business-central', false, dirname( WBC_PLUGIN_BASENAME ) . '/languages' ); } add_action( 'plugins_loaded', 'wbc_load_textdomain' ); /** * Initialize the plugin */ function wbc_init() { // Check WooCommerce dependency if ( ! wbc_check_woocommerce() ) { return; } // Load required files require_once WBC_PLUGIN_DIR . 'includes/class-wbc-loader.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-logger.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-oauth.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-api-client.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-product-sync.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-customer-sync.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-order-sync.php'; require_once WBC_PLUGIN_DIR . 'includes/class-wbc-cron.php'; // Load admin files if ( is_admin() ) { require_once WBC_PLUGIN_DIR . 'admin/class-wbc-admin.php'; } // Initialize the loader $loader = new WBC_Loader(); $loader->run(); } add_action( 'plugins_loaded', 'wbc_init', 20 ); /** * Add custom cron schedules */ function wbc_cron_schedules( $schedules ) { $schedules['twice_daily'] = array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily', 'woo-business-central' ), ); return $schedules; } add_filter( 'cron_schedules', 'wbc_cron_schedules' ); /** * HPOS compatibility declaration */ add_action( 'before_woocommerce_init', function() { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } } );