resume_plugin

The timeline below displays how wordpress function resume_plugin has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Tries to resume a single plugin.
 *
 * If a redirect was provided, we first ensure the plugin does not throw fatal
 * errors anymore.
 *
 * The way it works is by setting the redirection to the error before trying to
 * include the plugin file. If the plugin fails, then the redirection will not
 * be overwritten with the success message and the plugin will not be resumed.
 *
 * @since 5.2.0
 *
 * @param string $plugin   Single plugin to resume.
 * @param string $redirect Optional. URL to redirect to. Default empty string.
 * @return true|WP_Error True on success, false if `$plugin` was not paused,
 *                       `WP_Error` on failure.
 */
function resume_plugin($plugin, $redirect = '')
{
    /*
     * We'll override this later if the plugin could be resumed without
     * creating a fatal error.
     */
    if (!empty($redirect)) {
        wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-resume-error_' . $plugin), $redirect));
        // Load the plugin to test whether it throws a fatal error.
        ob_start();
        plugin_sandbox_scrape($plugin);
        ob_clean();
    }
    list($extension) = explode('/', $plugin);
    $result = wp_paused_plugins()->delete($extension);
    if (!$result) {
        return new WP_Error('could_not_resume_plugin', __('Could not resume the plugin.'));
    }
    return true;
}

WordPress Version: 5.4

/**
 * Tries to resume a single plugin.
 *
 * If a redirect was provided, we first ensure the plugin does not throw fatal
 * errors anymore.
 *
 * The way it works is by setting the redirection to the error before trying to
 * include the plugin file. If the plugin fails, then the redirection will not
 * be overwritten with the success message and the plugin will not be resumed.
 *
 * @since 5.2.0
 *
 * @param string $plugin   Single plugin to resume.
 * @param string $redirect Optional. URL to redirect to. Default empty string.
 * @return bool|WP_Error True on success, false if `$plugin` was not paused,
 *                       `WP_Error` on failure.
 */
function resume_plugin($plugin, $redirect = '')
{
    /*
     * We'll override this later if the plugin could be resumed without
     * creating a fatal error.
     */
    if (!empty($redirect)) {
        wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-resume-error_' . $plugin), $redirect));
        // Load the plugin to test whether it throws a fatal error.
        ob_start();
        plugin_sandbox_scrape($plugin);
        ob_clean();
    }
    list($extension) = explode('/', $plugin);
    $result = wp_paused_plugins()->delete($extension);
    if (!$result) {
        return new WP_Error('could_not_resume_plugin', __('Could not resume the plugin.'));
    }
    return true;
}

WordPress Version: 5.2

/**
 * Tries to resume a single plugin.
 *
 * If a redirect was provided, we first ensure the plugin does not throw fatal
 * errors anymore.
 *
 * The way it works is by setting the redirection to the error before trying to
 * include the plugin file. If the plugin fails, then the redirection will not
 * be overwritten with the success message and the plugin will not be resumed.
 *
 * @since 5.2.0
 *
 * @param string $plugin       Single plugin to resume.
 * @param string $redirect     Optional. URL to redirect to. Default empty string.
 * @return bool|WP_Error True on success, false if `$plugin` was not paused,
 *                       `WP_Error` on failure.
 */
function resume_plugin($plugin, $redirect = '')
{
    /*
     * We'll override this later if the plugin could be resumed without
     * creating a fatal error.
     */
    if (!empty($redirect)) {
        wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-resume-error_' . $plugin), $redirect));
        // Load the plugin to test whether it throws a fatal error.
        ob_start();
        plugin_sandbox_scrape($plugin);
        ob_clean();
    }
    list($extension) = explode('/', $plugin);
    $result = wp_paused_plugins()->delete($extension);
    if (!$result) {
        return new WP_Error('could_not_resume_plugin', __('Could not resume the plugin.'));
    }
    return true;
}