177 lines
3.7 KiB
PHP
177 lines
3.7 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Sphere\Debloat\Integrations;
|
||
|
use Sphere\Debloat\Plugin;
|
||
|
|
||
|
/**
|
||
|
* Rules specific to WPBakery Page Builder plugin.
|
||
|
*/
|
||
|
class Wpbakery
|
||
|
{
|
||
|
public $allow_selectors;
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
$this->register_hooks();
|
||
|
}
|
||
|
|
||
|
public function register_hooks()
|
||
|
{
|
||
|
add_action('wp', [$this, 'setup']);
|
||
|
}
|
||
|
|
||
|
public function setup()
|
||
|
{
|
||
|
if (in_array('wpbakery', Plugin::options()->integrations_css)) {
|
||
|
$this->setup_remove_css();
|
||
|
}
|
||
|
|
||
|
if (in_array('wpbakery', Plugin::options()->integrations_js)) {
|
||
|
$this->setup_delay_js();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Special rules related to remove css when WPBakery is active.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function setup_remove_css()
|
||
|
{
|
||
|
// Add all WPBakery frontend files for CSS processing.
|
||
|
add_filter('debloat/remove_css_includes', function($include) {
|
||
|
|
||
|
// Only need to remove unused on this. All other CSS files are modular and included only if needed.
|
||
|
$include[] = 'id:js_composer_front';
|
||
|
|
||
|
// FontAwesome can also go through this.
|
||
|
$include[] = 'js_composer/*font-awesome';
|
||
|
|
||
|
return $include;
|
||
|
});
|
||
|
|
||
|
add_filter('debloat/remove_css_excludes', function($exclude, \Sphere\Debloat\RemoveCss $remove_css) {
|
||
|
// // Don't bother with animations CSS file as it won't remove much.
|
||
|
// $exclude[] = 'id:vc_animate-css';
|
||
|
|
||
|
// // Pageable owl carousel.
|
||
|
// $exclude[] = 'id:vc_pageable_owl-carousel';
|
||
|
|
||
|
// // prettyPhoto would need all the CSS.
|
||
|
// $exclude[] = 'js_composer/*prettyphoto';
|
||
|
|
||
|
// // owlcarousel is added only if needed.
|
||
|
// $exclude[] = 'js_composer/*owl';
|
||
|
|
||
|
return $exclude;
|
||
|
}, 10, 2);
|
||
|
|
||
|
/**
|
||
|
* WPbakery selectors extras.
|
||
|
*/
|
||
|
$this->allow_selectors = [
|
||
|
[
|
||
|
'type' => 'any',
|
||
|
'search' => [
|
||
|
'.vc_mobile',
|
||
|
'.vc_desktop',
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'vc_parallax',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'*.vc_parallax*',
|
||
|
'.vc_hidden'
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'vc_pie_chart',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'.vc_ready'
|
||
|
]
|
||
|
],
|
||
|
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'wpb_gmaps_widget',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'.map_ready',
|
||
|
]
|
||
|
],
|
||
|
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'wpb_animate_when_almost_visible',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'.wpb_start_animation',
|
||
|
'.animated'
|
||
|
]
|
||
|
],
|
||
|
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'vc_toggle',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'.vc_toggle_active',
|
||
|
]
|
||
|
],
|
||
|
|
||
|
[
|
||
|
'type' => 'class',
|
||
|
'class' => 'vc_grid',
|
||
|
'sheet' => 'id:js_composer_front',
|
||
|
'search' => [
|
||
|
'.vc_grid-loading',
|
||
|
'.vc_visible-item',
|
||
|
'.vc_is-hover',
|
||
|
|
||
|
// -complete and -failed etc. too
|
||
|
'*.vc-spinner*',
|
||
|
'*.vc-grid*.vc_active*',
|
||
|
|
||
|
// Other dependencies maybe: prettyPhoto, owlcarousel for pagination of specific type.
|
||
|
]
|
||
|
],
|
||
|
];
|
||
|
|
||
|
add_filter('debloat/allow_css_selectors', function($allow, \Sphere\Debloat\RemoveCss $remove_css) {
|
||
|
|
||
|
// $html = $remove_css->html;
|
||
|
// if (strpos($html, 'background_slideshow_gallery') !== false) {
|
||
|
// array_push($this->allow_selectors, ...[
|
||
|
// [
|
||
|
// 'type' => 'any',
|
||
|
// 'sheet' => 'id:elementor-',
|
||
|
// 'search' => [
|
||
|
// '*.swiper-*',
|
||
|
// '*.elementor-background-slideshow*',
|
||
|
// '.elementor-ken-burns*',
|
||
|
// ]
|
||
|
// ],
|
||
|
// ]);
|
||
|
// }
|
||
|
|
||
|
return array_merge($allow, $this->allow_selectors);
|
||
|
}, 10, 2);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Special rules related to Delay JS when WPBakery is active.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function setup_delay_js()
|
||
|
{
|
||
|
add_filter('debloat/delay_js_includes', function($include) {
|
||
|
$include[] = 'js_composer/*';
|
||
|
return $include;
|
||
|
});
|
||
|
}
|
||
|
}
|