<?php /** * Elementor Compatibility Layer * * Handles Elementor Support * * @package WP_Ultimo * @subpackage Compat/Elementor_Compat * @since 2.0.0 */ namespace WP_Ultimo\Compat; // Exit if accessed directly defined('ABSPATH') || exit; /** * Handles Elementor Support * * @since 2.0.0 */ class Elementor_Compat { use \WP_Ultimo\Traits\Singleton; /** * Instantiate the necessary hooks. * * @since 2.0.0 * @return void */ public function init() { add_action('wu_duplicate_site', array($this, 'regenerate_css')); add_filter('wu_should_redirect_to_primary_domain', array($this, 'maybe_prevent_redirection')); add_action('elementor/widget/shortcode/skins_init', array($this, 'maybe_setup_preview')); } // end init; /** * Makes sure we force elementor to regenerate the styles when necessary. * * @since 1.10.10 * @param array $site Info about the duplicated site. * @return void */ public function regenerate_css($site) { if (!class_exists('\Elementor\Plugin')) { return; } // end if; if (!isset($site['site_id'])) { return; } // end if; switch_to_blog($site['site_id']); $file_manager = \Elementor\Plugin::$instance->files_manager; // phpcs:ignore if (!empty($file_manager)) { $file_manager->clear_cache(); } // end if; restore_current_blog(); } // end regenerate_css; /** * Prevents redirection to primary domain when in Elementor preview mode. * * @since 2.0.0 * * @param bool $should_redirect If we should redirect or not. * @return bool */ public function maybe_prevent_redirection($should_redirect) { return wu_request('elementor-preview', false) === false ? $should_redirect : false; } // end maybe_prevent_redirection; /** * Maybe adds the setup preview for elements inside elementor. * * @since 2.0.5 * @return void */ public function maybe_setup_preview() { $elementor_actions = array( 'elementor', 'elementor_ajax', ); if (in_array(wu_request('action'), $elementor_actions, true)) { wu_element_setup_preview(); } // end if; } // end maybe_setup_preview; } // end class Elementor_Compat;