Bypassing All-in-One WP Migration version check while exporting

Current the plugin is requiring latest addon version in the export process. You can use below custom mu-plugin to disable this:

<?php
/**
 * Plugin Name: AI1WM Disable Version Check
 * Description: Disables All-in-One WP Migration extension version checking to prevent "Extension is out of date" errors
 * Version: 1.1
 * Author: GPL Coffee
 *
 * This mu-plugin bypasses version compatibility checks for All-in-One WP Migration extensions
 */

// Prevent direct access
if (!defined('ABSPATH')) {
    exit;
}

class AI1WM_Disable_Version_Check {

    public function __construct() {
        // Hook very early to intercept before compatibility checks
        add_action('muplugins_loaded', array($this, 'init'), 1);
        add_action('plugins_loaded', array($this, 'disable_compatibility_hooks'), 1);
        add_action('ai1wm_loaded', array($this, 'remove_export_compatibility'), 1);
    }

    /**
     * Initialize early bypass mechanisms
     */
    public function init() {
        // Direct override of compatibility check method
        add_filter('ai1wm_compatibility_get', '__return_empty_array', 1);
        add_filter('ai1wm_compatibility_check', '__return_true', 1);
    }

    /**
     * Disable compatibility checks when plugins are loaded
     */
    public function disable_compatibility_hooks() {
        // Remove the export compatibility check entirely from the ai1wm_export filter
        remove_filter('ai1wm_export', 'Ai1wm_Export_Compatibility::execute', 10);

        // Also remove from import
        remove_filter('ai1wm_import', 'Ai1wm_Import_Compatibility::execute', 10);

        // Override the Compatibility::get method directly
        if (class_exists('Ai1wm_Compatibility')) {
            add_filter('pre_ai1wm_compatibility_get', array($this, 'return_empty_array'), 1, 2);
        }
    }

    /**
     * Remove export compatibility after AI1WM is loaded
     */
    public function remove_export_compatibility() {
        // Make sure compatibility check is removed even if added later
        remove_filter('ai1wm_export', 'Ai1wm_Export_Compatibility::execute', 10);
        remove_filter('ai1wm_import', 'Ai1wm_Import_Compatibility::execute', 10);

        // Hook into WordPress init to ensure we catch any late additions
        add_action('init', array($this, 'final_compatibility_removal'), 999);
    }

    /**
     * Final removal of compatibility checks
     */
    public function final_compatibility_removal() {
        global $wp_filter;

        // Remove compatibility check from export filter
        if (isset($wp_filter['ai1wm_export'])) {
            $wp_filter['ai1wm_export']->remove_filter('ai1wm_export', 'Ai1wm_Export_Compatibility::execute', 10);
        }

        // Remove compatibility check from import filter
        if (isset($wp_filter['ai1wm_import'])) {
            $wp_filter['ai1wm_import']->remove_filter('ai1wm_import', 'Ai1wm_Import_Compatibility::execute', 10);
        }

        // Override the class method directly if possible
        if (class_exists('Ai1wm_Compatibility')) {
            // Create a wrapper to always return empty array
            $this->override_compatibility_class();
        }
    }

    /**
     * Override the compatibility class methods
     */
    public function override_compatibility_class() {
        // Add filter to intercept calls to Ai1wm_Compatibility::get()
        add_filter('ai1wm_compatibility_messages', array($this, 'return_empty_array'), 1);

        // Hook into the export process specifically
        add_filter('ai1wm_export', array($this, 'bypass_compatibility_in_export'), 5);
        add_filter('ai1wm_import', array($this, 'bypass_compatibility_in_import'), 5);
    }

    /**
     * Bypass compatibility check in export process
     */
    public function bypass_compatibility_in_export($params) {
        // Remove the compatibility check if it's still there
        remove_filter('ai1wm_export', 'Ai1wm_Export_Compatibility::execute', 10);
        return $params;
    }

    /**
     * Bypass compatibility check in import process
     */
    public function bypass_compatibility_in_import($params) {
        // Remove the compatibility check if it's still there
        remove_filter('ai1wm_import', 'Ai1wm_Import_Compatibility::execute', 10);
        return $params;
    }

    /**
     * Return empty array for compatibility messages
     */
    public function return_empty_array($messages = array()) {
        return array();
    }
}

// Initialize the plugin
new AI1WM_Disable_Version_Check();

// Additional direct function override for absolute certainty
if (!function_exists('ai1wm_compatibility_bypass_direct')) {
    /**
     * Direct override function that replaces compatibility checks
     */
    function ai1wm_compatibility_bypass_direct() {
        // Remove compatibility hooks on every WordPress load
        remove_filter('ai1wm_export', 'Ai1wm_Export_Compatibility::execute', 10);
        remove_filter('ai1wm_import', 'Ai1wm_Import_Compatibility::execute', 10);
    }

    // Hook this to multiple places to ensure it runs
    add_action('init', 'ai1wm_compatibility_bypass_direct', 1);
    add_action('admin_init', 'ai1wm_compatibility_bypass_direct', 1);
    add_action('wp_loaded', 'ai1wm_compatibility_bypass_direct', 1);
}

Creating new mu-plugin: creating a new php file, e.g ai1wm-disable-version-check.php, and locate it in /wp-content/mu-plugins folder with above code.

This post was upvoted 0 time(s).
No old comment was found.
0 custom comment(s)
Please Login to comment on this content.
We are working on pending support tickets. Thanks all for your patience! Dismiss