if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
* Elementor rollback handler class is responsible for rolling back Elementor to
* @var string Package URL.
* @var string Package URL.
* @var string Plugin name.
* @var string Plugin slug.
* Initializing Elementor rollback.
* @param array $args Optional. Rollback arguments. Default is an empty array.
public function __construct( $args = [] ) {
foreach ( $args as $key => $value ) {
* Add an inline CSS to the rollback page.
private function print_inline_style() {
font-family: Courier, monospace;
padding: 70px !important;
text-transform: uppercase;
* Change the plugin data when WordPress checks for updates. This method
* modifies package data to update the plugin from a specific URL containing
protected function apply_package() {
$update_plugins = get_site_transient( 'update_plugins' );
if ( ! is_object( $update_plugins ) ) {
$update_plugins = new \stdClass();
$plugin_info = new \stdClass();
$plugin_info->new_version = $this->version;
$plugin_info->slug = $this->plugin_slug;
$plugin_info->package = $this->package_url;
$plugin_info->url = 'https://elementor.com/';
$update_plugins->response[ $this->plugin_name ] = $plugin_info;
// Remove handle beta testers.
remove_filter( 'pre_set_site_transient_update_plugins', [ Plugin::instance()->beta_testers, 'check_version' ] );
set_site_transient( 'update_plugins', $update_plugins );
* Run WordPress upgrade to rollback Elementor to previous version.
protected function upgrade() {
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$logo_url = ELEMENTOR_ASSETS_URL . 'images/logo-panel.svg';
'url' => 'update.php?action=upgrade-plugin&plugin=' . rawurlencode( $this->plugin_name ),
'plugin' => $this->plugin_name,
'nonce' => 'upgrade-plugin_' . $this->plugin_name,
'title' => '<img src="' . $logo_url . '" alt="Elementor">' . esc_html__( 'Rollback to Previous Version', 'elementor' ),
$this->print_inline_style();
$upgrader = new \Plugin_Upgrader( new \Plugin_Upgrader_Skin( $upgrader_args ) );
$upgrader->upgrade( $this->plugin_name );
* Rollback Elementor to previous versions.