loadDependencies(); if (is_admin()) { $this->adminHooks(); } $this->publicHooks(); } private function loadDependencies() { // Define constants before they're needed define("WOOADDTOCART_PLUGIN_DIR_URL", plugin_dir_url(__FILE__)); define("WOOADDTOCART_PLUGIN_DIR_PATH", plugin_dir_path(__FILE__)); define("WOOADDTOCART_PLUGIN_VERSION", '2.0.3'); include_once 'load.php'; } public function adminHooks() { add_filter('woocommerce_product_data_tabs', array('WooAddToCart\Classes\ProductSettings', 'registerProductDataTab')); add_action('woocommerce_product_data_panels', array('WooAddToCart\Classes\ProductSettings', 'createDataFields')); add_action('woocommerce_process_product_meta', array('WooAddToCart\Classes\ProductSettings', 'saveDataFields')); add_filter('woocommerce_get_settings_pages', array('WooAddToCart\Classes\Customization', 'wooAddToCartAddSettings'), 15, 1); add_action('admin_notices', [$this, 'adminNotice']); add_action('admin_init', [$this, 'atcbc_notice_dismissed']); } public function adminNotice() { $screen = get_current_screen(); $user_id = get_current_user_id(); $nonce = wp_create_nonce('atcbc_dismiss_notice_nonce'); // Ensure user meta exists if (!get_user_meta($user_id, 'atcbc-notice-dismissed', true)) { add_user_meta($user_id, 'atcbc-notice-dismissed', 'active'); } // Show notice only on specific screens if ($screen && in_array($screen->id, ['dashboard', 'plugins'], true)) { if (get_user_meta($user_id, 'atcbc-notice-dismissed', true) === 'active') { ?>

getInstallationDetails(); $class = 'notice notice-error'; $install_url_text = 'Click Here to Install the Plugin'; if ($pluginInfo->action == 'activate') { $install_url_text = 'Click Here to Activate the Plugin'; } $message = 'Add To Cart Button Customizations For Woocommerce Add-On Requires Woocommerce Base Plugin, ' . $install_url_text . ''; printf('

%2$s

', esc_attr($class), wp_kses_post($message)); }); } /** * Get the Add To Cart Button Customizations For Woocommerce plugin installation information e.g. the URL to install. * * @return \stdClass $activation */ protected function getInstallationDetails() { $activation = (object)[ 'action' => 'install', 'url' => '' ]; $allPlugins = get_plugins(); if (isset($allPlugins['woocommerce/woocommerce.php'])) { $url = wp_nonce_url( self_admin_url('plugins.php?action=activate&plugin=woocommerce/woocommerce.php'), 'activate-plugin_woocommerce/woocommerce.php' ); $activation->action = 'activate'; } else { $api = (object)[ 'slug' => 'woocommerce' ]; $url = wp_nonce_url( self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug ); } $activation->url = $url; return $activation; } } add_action('plugins_loaded', function () { // Check for WooCommerce dependency before instantiating the plugin if (!defined('WC_PLUGIN_FILE')) { $plugin = new WooAddToCartCustomizationsLite(); return $plugin->injectDependency(); } $WOOADDTOCART = new WooAddToCartCustomizationsLite(); $WOOADDTOCART->boot(); }); register_deactivation_hook(__FILE__, function () { $user_id = get_current_user_id(); update_user_meta($user_id, 'atcbc-notice-dismissed', 'active'); });