Skip to content

Instantly share code, notes, and snippets.

@JWPapi
Created December 5, 2021 19:40
Show Gist options
  • Save JWPapi/78b5e5c9b251971059a21bd2161030f7 to your computer and use it in GitHub Desktop.
Save JWPapi/78b5e5c9b251971059a21bd2161030f7 to your computer and use it in GitHub Desktop.
class Plugins_Disabler {
/**
* Maps the plugins to disable in a given URL regex match.
*
* @var array
*/
private static $url_plugin_map = [
'/?wc-ajax=update_order_review' => ['bh-wp-account-and-login-ux/bh-wp-account-and-login-ux.php'],
];
/**
* Initialize the plugin behavior.
*
* @param array $plugins Plugins enabled in the site.
*/
public static function init($plugins) {
if (!isset($_SERVER['REQUEST_URI']) || !isset($_SERVER['HTTP_REFERER'])) {
return $plugins;
}
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash
$check_uri = rtrim(strtolower(sanitize_text_field($_SERVER['REQUEST_URI'])), '/\\');
function isGiftReferer($referer): bool {
return strpos($referer, 'checkout/?add-to-cart=1305') !== false;
}
foreach (self::$url_plugin_map as $regex => $disable_plugins) {
if ($regex === $check_uri && isGiftReferer($_SERVER['HTTP_REFERER'])) {
foreach ($disable_plugins as $plugin) {
$key = array_search($plugin, $plugins, true);
if (false !== $key) {
unset($plugins[$key]);
}
}
}
}
return $plugins;
}
}
add_filter('option_active_plugins', ['\YourNamespace\Plugins_Disabler', 'init'], 99);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment