113 lines
2.1 KiB
PHP
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;
|