Отключить плагин от получения стилей из другого плагина

Мой плагин WordPress использует Chosen Select и должен использовать файл css в my-plugin/assets/resources/chosen.min.css .

К сожалению, когда другой плагин также использует Chosen Select, мой плагин имеет тенденцию захватывать стили из другого css-файла.

Например, в настоящее время он получает стили из yith-woocommerce-ajax-search/plugin-fw/assets/css/chosen/chosen.css который yith-woocommerce-ajax-search/plugin-fw/assets/css/chosen/chosen.css все мои собственные стили.

Каков наилучший способ убедиться, что установка Chosen Select (или других распространенных вещей, у которых есть собственный силинг) не получает стилей из других файлов css?

Вот как я регистрирую таблицу стилей.

 function lsmi_load_admin_script() { wp_register_style( 'chosencss', plugins_url( 'assets/resources/chosen.min.css', __FILE__ ), true, '', 'all' ); wp_enqueue_style( 'chosencss' ); } 

Solutions Collecting From Web of "Отключить плагин от получения стилей из другого плагина"

На самом деле нет надежного метода для определения таблицы стилей из других плагинов или темы, а затем «отключения их». Вы можете только догадываться, что другие плагины и темы будут использовать тот же самый дескриптор, что и для регистрации таблицы стилей. Однако гораздо проще, если ваш плагин предназначен только для личного использования, тогда вы можете вручную пройти через плагин, получить дескриптор противоречивой таблицы стилей и самостоятельно отменить регистрацию

Вы также можете присвоить вашему действию wp_enqueue_scripts очень низкий приоритет ( очень высокое число ), чтобы загрузить таблицу стилей как можно позже

 add_action( 'wp_enqueue_scripts', 'lsmi_load_admin_script', PHP_INT_MAX ); function lsmi_load_admin_script() { // Deregister and dequeue other conflicting stylesheets wp_dequeue_style( 'chosencss' ); wp_deregister_style( 'chosencss' ); // Add your own stylesheet wp_register_style( 'chosencss', plugins_url( 'assets/resources/chosen.min.css', __FILE__ ), true, '', 'all' ); wp_enqueue_style( 'chosencss' ); } 

Лучшим способом избежать конфликта CSS / JS между плагинами является размещение в нужном месте.

Я имею в виду, вставлять стиль / скрипт вправо, когда скрипт необходим, а не в регистрации стилей / скриптов.

 function lsmi_load_admin_script() { wp_register_style( 'chosencss', plugins_url( 'assets/resources/chosen.min.css', __FILE__ ), true, '', 'all' ); } add_action( 'wp_enqueue_scripts' , 'lsmi_load_admin_script' ); /* When you really need the style/script - use it */ function use_my_style () { wp_enqueue_style('chosencss'); } 

Таким образом, если вам не нужен стиль на определенной странице, вы можете сделать if / else, в зависимости от страницы / сообщения, которая будет отображать стиль / скрипт