Files
medicalalert-web-reloaded/wp/wp-content/plugins/divi-builder/theme-compat/bridge.php
Rachit Bhargava 5d0f0734d8 first commit
2023-07-21 17:12:10 -04:00

88 lines
2.2 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Theme Compatibility for Bridge theme
* @see http://bridgelanding.qodeinteractive.com/
* @since ??
*/
class ET_Builder_Theme_Compat_Bridge {
/**
* Unique instance of class
*/
public static $instance;
/**
* @var ET_Core_Data_Utils
*/
protected static $_ = null;
/**
* Constructor
*/
private function __construct(){
if ( null === self::$_ ) {
self::$_ = ET_Core_Data_Utils::instance();
}
$this->init_hooks();
}
/**
* Gets the instance of the class
*/
public static function init(){
if ( null === self::$instance ){
self::$instance = new self();
}
return self::$instance;
}
/**
* Hook methods to WordPress
* @return void
*/
function init_hooks() {
$theme = wp_get_theme();
$version = isset( $theme['Version'] ) ? $theme['Version'] : false;
// Bail if no theme version found
if ( ! $version ) {
return;
}
add_action( 'wp_enqueue_scripts', array( $this, 'fix_conflicting_waypoints' ) );
}
/**
* Deregister Bridge's waypoint (outdated, v2.0.4) script so Divi Builder's waypoint script
* (v4.0.0) will be registered and equeued so builder animation work as expected since v2.0.4
* script can't run Divi's waypoint callback properly. Theme compat is only processed on builder
* page, builder preview, layout block preview, and administrator code. Bridge's waypoint seems
* to be used on Visual Composer-based page only. Since VC and builder will be used on the same
* page, this fix theoretically should be okay.
*
* Bridge theme version: 18.0.9
*
* @todo Once theme's waypoint is updated to v4.x, limit the scope of this fix to prior theme version
*
* @since ??
*/
function fix_conflicting_waypoints() {
global $wp_scripts;
$registered_waypoints = self::$_->array_get( $wp_scripts->registered, 'waypoints', '' );
$is_bridge_waypoints = strpos( $registered_waypoints->src, '/wp-content/themes/bridge/' );
// Deregister waypoints script registered by Bridge theme on builder-related page so Divi's
// waypoint script can be registered and enqueued
if ( $is_bridge_waypoints ) {
wp_deregister_script( 'waypoints' );
}
}
}
ET_Builder_Theme_Compat_Bridge::init();