PluginProbe
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization / 4.2.9
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization v4.2.9
4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 2.5.5 2.5.6 2.5.7 3.0.0 3.0.1 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.12.0 3.12.1 All 134 releases
optimole-wp / inc / compatibilities / elementor_builder.php

elementor_builder.php in Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization 4.2.9, at inc/compatibilities/elementor_builder.php

131 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Class Optml_elementor_builder
5 *
6 * @reason Adding selectors for background lazyload
7 */
8 class Optml_elementor_builder extends Optml_compatibility {
9
10 /**
11 * Should we load the integration logic.
12 *
13 * @return bool Should we load.
14 */
15 public function should_load() {
16 include_once ABSPATH . 'wp-admin/includes/plugin.php';
17
18 return is_plugin_active( 'elementor/elementor.php' );
19 }
20
21 /**
22 * Register integration details.
23 */
24 public function register() {
25 add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'add_src' ], PHP_INT_MIN, 1 );
26
27 add_filter( 'elementor/frontend/builder_content/before_enqueue_css_file', [ $this, 'add_src_filter' ], PHP_INT_MIN, 1 );
28
29 add_filter( 'elementor/frontend/builder_content/before_print_css', [ $this, 'remove_src_filter' ], PHP_INT_MIN, 1 );
30
31 add_filter(
32 'optml_lazyload_bg_selectors',
33 function ( $all_watchers ) {
34 $all_watchers[] = '.elementor-widget-container';
35 $all_watchers[] = '.elementor-background-slideshow__slide__image';
36 $all_watchers[] = '.elementor-section[data-settings*="background_background"]';
37 $all_watchers[] = '.elementor-column[data-settings*="background_background"] > .elementor-widget-wrap';
38 $all_watchers[] = '.elementor-element[data-settings*="background_background"]';
39 $all_watchers[] = '.elementor-section > .elementor-background-overlay';
40
41 return $all_watchers;
42 }
43 );
44 add_action(
45 'optml_settings_updated',
46 function () {
47 if ( did_action( 'elementor/loaded' ) ) {
48 if ( class_exists( '\Elementor\Plugin' ) ) {
49 \Elementor\Plugin::instance()->files_manager->clear_cache();
50 }
51 }
52 }
53 );
54 }
55
56 /**
57 * Remove filter for the image src after the css is saved by elementor.
58 *
59 * @param bool $with_css Flag used to determine if the css will be inline or not. Not used.
60 * @return bool
61 * @uses filter:elementor/frontend/builder_content/before_print_css
62 */
63 public function remove_src_filter( $with_css ) {
64
65 remove_filter( 'wp_get_attachment_image_src', [ $this, 'optimize_src' ], PHP_INT_MAX );
66
67 return $with_css;
68 }
69 /**
70 * Add filter for the image src after the css is enqueued.
71 *
72 * @param object $css Elementor css info. Not used.
73 * @return object
74 * @uses filter:elementor/frontend/builder_content/before_enqueue_css_file
75 */
76 public function add_src_filter( $css ) {
77
78 // check if the filter was added to avoid duplication
79 if ( has_filter( 'wp_get_attachment_image_src', [ $this, 'optimize_src' ] ) ) {
80 return $css;
81 }
82
83 add_filter( 'wp_get_attachment_image_src', [ $this, 'optimize_src' ], PHP_INT_MAX, 4 );
84
85 return $css;
86 }
87
88 /**
89 * Add action to add the filter for the image src.
90 *
91 * @return void
92 */
93 public function add_src() {
94 if ( ! has_filter( 'wp_get_attachment_image_src', [ $this, 'optimize_src' ] ) ) {
95 add_filter( 'wp_get_attachment_image_src', [ $this, 'optimize_src' ], PHP_INT_MAX, 4 );
96 }
97 }
98
99 /**
100 * Optimize the image src when it is requested in elementor.
101 *
102 * @param array $image Image data.
103 * @param int $attachment_id Attachment id.
104 * @param string|int[] $size Image size.
105 * @param bool $icon Whether to use icon or not.
106 * @return array
107 * @uses filter:wp_get_attachment_image_src
108 */
109 public function optimize_src( $image, $attachment_id, $size, $icon ) {
110
111 if ( ! isset( $image[0] ) ) {
112 return $image;
113 }
114 // We can't run the replacer before the setup is done, otherwise it will throw errors.
115 if ( ! did_action( 'optml_replacer_setup' ) ) {
116 return $image;
117 }
118 $image[0] = Optml_Main::instance()->manager->url_replacer->build_url( $image[0] );
119
120 return $image;
121 }
122 /**
123 * Should we early load the compatibility?
124 *
125 * @return bool Whether to load the compatibility or not.
126 */
127 public function should_load_early() {
128 return true;
129 }
130 }
131