/** * Plugin settings */ private $settings; /** * Constructor */ public function __construct($settings = null) { $this->settings = $settings; add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_scripts')); add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts')); add_action('wp', array($this, 'check_for_shortcodes')); } /** * Enqueue scripts and styles for the public site */ public function enqueue_frontend_scripts() { // Enqueue styles wp_enqueue_style('ewp-enhancement-css', EWP_PLUGIN_URL . 'public/css/enhancement.css', array(), EWP_VERSION); // Thêm CSS tùy chỉnh cho các layout khác nhau wp_enqueue_style('ewp-custom-layouts-css', EWP_PLUGIN_URL . 'public/css/custom-layouts.css', array('ewp-enhancement-css'), EWP_VERSION); // Enqueue scripts wp_enqueue_script('ewp-enhancement-js', EWP_PLUGIN_URL . 'public/js/enhancement.js', array('jquery'), EWP_VERSION, true); // Localize script for AJAX wp_localize_script('ewp-enhancement-js', 'ewp_enhancement', array( 'ajax_url' => admin_url('admin-ajax.php'), 'countdown_timer_nonce' => wp_create_nonce('ewp_countdown_timer'), 'plugin_url' => EWP_PLUGIN_URL, // Thêm các biến khác mà script có thể cần 'countdown_minutes' => isset($this->settings['countdown_minutes']) ? $this->settings['countdown_minutes'] : 15, 'min_viewers' => isset($this->settings['min_viewers']) ? $this->settings['min_viewers'] : 5, 'max_viewers' => isset($this->settings['max_viewers']) ? $this->settings['max_viewers'] : 25, 'nonce' => wp_create_nonce('ewp_nonce'), 'texts' => array( 'people_viewing' => __('people viewing this product right now', 'enhanced-woocommerce-pro'), 'select_product' => __('Please select at least one product', 'enhanced-woocommerce-pro'), 'adding_to_cart' => __('Adding to cart...', 'enhanced-woocommerce-pro'), 'added_to_cart' => __('Added to cart!', 'enhanced-woocommerce-pro'), 'added' => __('Added', 'enhanced-woocommerce-pro'), 'add_to_cart_error' => __('Failed to add products to cart', 'enhanced-woocommerce-pro'), 'processing' => __('Processing...', 'enhanced-woocommerce-pro'), ) )); } /** * Check for shortcodes in the content and load appropriate CSS * This ensures CSS is loaded when shortcodes are used in posts/pages */ public function check_for_shortcodes() { global $post; $load_styles = false; if (is_singular() && is_a($post, 'WP_Post')) { $shortcodes = array( 'ewp_countdown_timer', 'ewp_fake_viewers', 'ewp_cross_sells', 'ewp_membership_options' ); $content = $post->post_content; foreach ($shortcodes as $shortcode) { if (has_shortcode($content, $shortcode) || stripos($content, "[$shortcode") !== false) { $load_styles = true; break; } } // Also check for block-based content that might include our shortcodes if (!$load_styles && has_blocks($post->post_content)) { foreach ($shortcodes as $shortcode) { if (stripos($content, "[$shortcode") !== false) { $load_styles = true; break; } } } // Check for shortcodes in widgets if (!$load_styles && is_active_widget(false, false, 'text', true)) { $widget_text_instances = get_option('widget_text'); if (is_array($widget_text_instances)) { foreach ($widget_text_instances as $instance) { if (isset($instance['text'])) { foreach ($shortcodes as $shortcode) { if (has_shortcode($instance['text'], $shortcode) || stripos($instance['text'], "[$shortcode") !== false) { $load_styles = true; break 2; } } } } } } // If shortcodes are found, ensure styles are loaded if ($load_styles) { add_action('wp_enqueue_scripts', array($this, 'load_shortcode_styles'), 15); } } } /** * Load styles needed for shortcodes */ public function load_shortcode_styles() { wp_enqueue_style('ewp-enhancement-css', EWP_PLUGIN_URL . 'public/css/enhancement.css', array(), EWP_VERSION); wp_enqueue_style('ewp-custom-layouts-css', EWP_PLUGIN_URL . 'public/css/custom-layouts.css', array('ewp-enhancement-css'), EWP_VERSION); wp_enqueue_script('ewp-enhancement-js', EWP_PLUGIN_URL . 'public/js/enhancement.js', array('jquery'), EWP_VERSION, true); // Localize script for AJAX wp_localize_script('ewp-enhancement-js', 'ewp_enhancement', array( 'ajax_url' => admin_url('admin-ajax.php'), 'countdown_timer_nonce' => wp_create_nonce('ewp_countdown_timer'), 'plugin_url' => EWP_PLUGIN_URL, 'nonce' => wp_create_nonce('ewp_nonce'), 'texts' => array( 'people_viewing' => __('people viewing this product right now', 'enhanced-woocommerce-pro'), 'select_product' => __('Please select at least one product', 'enhanced-woocommerce-pro'), 'adding_to_cart' => __('Adding to cart...', 'enhanced-woocommerce-pro'), 'added_to_cart' => __('Added to cart!', 'enhanced-woocommerce-pro'), 'added' => __('Added', 'enhanced-woocommerce-pro'), 'add_to_cart_error' => __('Failed to add products to cart', 'enhanced-woocommerce-pro'), 'processing' => __('Processing...', 'enhanced-woocommerce-pro'), ) )); }