Files
wp-multisite-waas/inc/compat/class-elementor-compat.php
2024-11-30 18:24:12 -07:00

113 lines
2.1 KiB
PHP

<?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;