Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../modules/element-...
File: module.php
<?php
[0] Fix | Delete
namespace Elementor\Modules\ElementCache;
[1] Fix | Delete
[2] Fix | Delete
use Elementor\Controls_Manager;
[3] Fix | Delete
use Elementor\Core\Base\Module as BaseModule;
[4] Fix | Delete
use Elementor\Core\Experiments\Manager as ExperimentsManager;
[5] Fix | Delete
use Elementor\Element_Base;
[6] Fix | Delete
use Elementor\Plugin;
[7] Fix | Delete
use Elementor\Settings;
[8] Fix | Delete
[9] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[10] Fix | Delete
exit; // Exit if accessed directly.
[11] Fix | Delete
}
[12] Fix | Delete
[13] Fix | Delete
class Module extends BaseModule {
[14] Fix | Delete
[15] Fix | Delete
const OPTION_UNIQUE_ID = '_elementor_element_cache_unique_id';
[16] Fix | Delete
[17] Fix | Delete
public function get_name() {
[18] Fix | Delete
return 'element-cache';
[19] Fix | Delete
}
[20] Fix | Delete
[21] Fix | Delete
public function __construct() {
[22] Fix | Delete
parent::__construct();
[23] Fix | Delete
[24] Fix | Delete
$this->register_shortcode();
[25] Fix | Delete
[26] Fix | Delete
if ( ! Plugin::$instance->experiments->is_feature_active( 'e_element_cache' ) ) {
[27] Fix | Delete
return;
[28] Fix | Delete
}
[29] Fix | Delete
[30] Fix | Delete
add_filter( 'elementor/element_cache/unique_id', [ $this, 'get_unique_id' ] );
[31] Fix | Delete
[32] Fix | Delete
$this->add_advanced_tab_actions();
[33] Fix | Delete
[34] Fix | Delete
if ( is_admin() ) {
[35] Fix | Delete
add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 100 );
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
$this->clear_cache_on_site_changed();
[39] Fix | Delete
}
[40] Fix | Delete
[41] Fix | Delete
public static function get_experimental_data(): array {
[42] Fix | Delete
return [
[43] Fix | Delete
'name' => 'e_element_cache',
[44] Fix | Delete
'title' => esc_html__( 'Element Caching', 'elementor' ),
[45] Fix | Delete
'tag' => esc_html__( 'Performance', 'elementor' ),
[46] Fix | Delete
'description' => esc_html__( 'Elements caching reduces loading times by serving up a copy of an element instead of rendering it fresh every time the page is loaded. When active, Elementor will determine which elements can benefit from static loading - but you can override this.', 'elementor' ),
[47] Fix | Delete
'release_status' => ExperimentsManager::RELEASE_STATUS_STABLE,
[48] Fix | Delete
'default' => ExperimentsManager::STATE_ACTIVE,
[49] Fix | Delete
'generator_tag' => true,
[50] Fix | Delete
];
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
public function get_unique_id() {
[54] Fix | Delete
$unique_id = get_option( static::OPTION_UNIQUE_ID );
[55] Fix | Delete
[56] Fix | Delete
if ( ! $unique_id ) {
[57] Fix | Delete
$unique_id = md5( uniqid( wp_generate_password() ) );
[58] Fix | Delete
update_option( static::OPTION_UNIQUE_ID, $unique_id );
[59] Fix | Delete
}
[60] Fix | Delete
[61] Fix | Delete
return $unique_id;
[62] Fix | Delete
}
[63] Fix | Delete
[64] Fix | Delete
private function register_shortcode() {
[65] Fix | Delete
add_shortcode( 'elementor-element', function ( $atts ) {
[66] Fix | Delete
if ( empty( $atts['data'] ) ) {
[67] Fix | Delete
return '';
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
if ( empty( $atts['k'] ) || $atts['k'] !== $this->get_unique_id() ) {
[71] Fix | Delete
return '';
[72] Fix | Delete
}
[73] Fix | Delete
[74] Fix | Delete
$widget_data = json_decode( base64_decode( $atts['data'] ), true );
[75] Fix | Delete
[76] Fix | Delete
if ( empty( $widget_data ) || ! is_array( $widget_data ) ) {
[77] Fix | Delete
return '';
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
ob_start();
[81] Fix | Delete
[82] Fix | Delete
$element = Plugin::$instance->elements_manager->create_element_instance( $widget_data );
[83] Fix | Delete
[84] Fix | Delete
if ( $element ) {
[85] Fix | Delete
$element->print_element();
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
return ob_get_clean();
[89] Fix | Delete
} );
[90] Fix | Delete
}
[91] Fix | Delete
[92] Fix | Delete
private function add_advanced_tab_actions() {
[93] Fix | Delete
$hooks = [
[94] Fix | Delete
'elementor/element/common/_section_style/after_section_end' => '_css_classes', // Widgets
[95] Fix | Delete
];
[96] Fix | Delete
[97] Fix | Delete
foreach ( $hooks as $hook => $injection_position ) {
[98] Fix | Delete
add_action(
[99] Fix | Delete
$hook,
[100] Fix | Delete
function( $element, $args ) use ( $injection_position ) {
[101] Fix | Delete
$this->add_control_to_advanced_tab( $element, $args, $injection_position );
[102] Fix | Delete
},
[103] Fix | Delete
10,
[104] Fix | Delete
2
[105] Fix | Delete
);
[106] Fix | Delete
}
[107] Fix | Delete
}
[108] Fix | Delete
[109] Fix | Delete
private function add_control_to_advanced_tab( Element_Base $element, $args, $injection_position ) {
[110] Fix | Delete
$element->start_injection(
[111] Fix | Delete
[
[112] Fix | Delete
'of' => $injection_position,
[113] Fix | Delete
]
[114] Fix | Delete
);
[115] Fix | Delete
[116] Fix | Delete
$control_data = [
[117] Fix | Delete
'label' => esc_html__( 'Cache Settings', 'elementor' ),
[118] Fix | Delete
'type' => Controls_Manager::SELECT,
[119] Fix | Delete
'default' => '',
[120] Fix | Delete
'options' => [
[121] Fix | Delete
'' => esc_html__( 'Default', 'elementor' ),
[122] Fix | Delete
'yes' => esc_html__( 'Inactive', 'elementor' ),
[123] Fix | Delete
'no' => esc_html__( 'Active', 'elementor' ),
[124] Fix | Delete
],
[125] Fix | Delete
];
[126] Fix | Delete
[127] Fix | Delete
$element->add_control( '_element_cache', $control_data );
[128] Fix | Delete
[129] Fix | Delete
$element->end_injection();
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
public function register_admin_fields( Settings $settings ) {
[133] Fix | Delete
$settings->add_field(
[134] Fix | Delete
Settings::TAB_PERFORMANCE,
[135] Fix | Delete
Settings::TAB_PERFORMANCE,
[136] Fix | Delete
'element_cache_ttl',
[137] Fix | Delete
[
[138] Fix | Delete
'label' => esc_html__( 'Element Cache', 'elementor' ),
[139] Fix | Delete
'field_args' => [
[140] Fix | Delete
'class' => 'elementor-element-cache-ttl',
[141] Fix | Delete
'type' => 'select',
[142] Fix | Delete
'std' => '24',
[143] Fix | Delete
'options' => [
[144] Fix | Delete
'disable' => esc_html__( 'Disable', 'elementor' ),
[145] Fix | Delete
'1' => esc_html__( '1 Hour', 'elementor' ),
[146] Fix | Delete
'6' => esc_html__( '6 Hours', 'elementor' ),
[147] Fix | Delete
'12' => esc_html__( '12 Hours', 'elementor' ),
[148] Fix | Delete
'24' => esc_html__( '1 Day', 'elementor' ),
[149] Fix | Delete
'72' => esc_html__( '3 Days', 'elementor' ),
[150] Fix | Delete
'168' => esc_html__( '1 Week', 'elementor' ),
[151] Fix | Delete
'336' => esc_html__( '2 Weeks', 'elementor' ),
[152] Fix | Delete
'720' => esc_html__( '1 Month', 'elementor' ),
[153] Fix | Delete
'8760' => esc_html__( '1 Year', 'elementor' ),
[154] Fix | Delete
],
[155] Fix | Delete
'desc' => esc_html__( 'Specify the duration for which data is stored in the cache. Elements caching speeds up loading by serving pre-rendered copies of elements, rather than rendering them fresh each time. This control ensures efficient performance and up-to-date content.', 'elementor' ),
[156] Fix | Delete
],
[157] Fix | Delete
]
[158] Fix | Delete
);
[159] Fix | Delete
}
[160] Fix | Delete
[161] Fix | Delete
private function clear_cache_on_site_changed() {
[162] Fix | Delete
add_action( 'activated_plugin', [ $this, 'clear_cache' ] );
[163] Fix | Delete
add_action( 'deactivated_plugin', [ $this, 'clear_cache' ] );
[164] Fix | Delete
add_action( 'switch_theme', [ $this, 'clear_cache' ] );
[165] Fix | Delete
add_action( 'upgrader_process_complete', [ $this, 'clear_cache' ] );
[166] Fix | Delete
[167] Fix | Delete
add_action( 'update_option_elementor_element_cache_ttl', [ $this, 'clear_cache' ] );
[168] Fix | Delete
}
[169] Fix | Delete
[170] Fix | Delete
public function clear_cache() {
[171] Fix | Delete
Plugin::$instance->files_manager->clear_cache();
[172] Fix | Delete
}
[173] Fix | Delete
}
[174] Fix | Delete
[175] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function