Repository URL to install this package:
<?php
namespace FSProVendor\WPDesk\Plugin\Flow\Initialization;
/**
* Can disable shared plugin before it's loaded using plugin filename
*/
class PluginDisablerByFileTrait
{
/** @var string */
private $plugin_file;
/**
* @param string $plugin_file
*/
public function __construct($plugin_file)
{
$this->plugin_file = $plugin_file;
}
/**
* @return void
*/
public function disable()
{
/**
* @param WPDesk_Loader[] $loaders
*
* @return array
*/
$false_for_helper = function ($loaders) {
return \array_filter($loaders, function ($loader) {
try {
// BIG HACK TO GET PRIVATE PROPERTY
$reflection = new \ReflectionClass($loader);
$property = $reflection->getProperty('loader_info');
$property->setAccessible(\true);
/** @var WPDesk_Composer_Loader_Info $inner_info */
$inner_info = $property->getValue($loader);
$plugin_info = $inner_info->get_plugin_info();
return \basename($plugin_info->get_plugin_file_name()) !== \basename($this->plugin_file);
} catch (\Exception $e) {
return \true;
}
});
};
\add_filter('wp_autoloader_loader_loaders_to_load', $false_for_helper);
\add_filter('wp_autoloader_loader_loaders_to_create', $false_for_helper);
}
}