阻止插件从其他插件获取样式

时间:2016-03-06 作者:j8d

我的WordPress插件使用Select,并且应该在以下位置使用css文件my-plugin/assets/resources/chosen.min.css.

不幸的是,当另一个插件也使用Select时,我的插件倾向于从其他css文件中获取样式。

例如,它当前正在从yith-woocommerce-ajax-search/plugin-fw/assets/css/chosen/chosen.css 这打乱了我所有的自定义样式。

确保所选Select(或其他有自己的syling的常见事物)的安装不会从其他css文件获取样式的最佳方法是什么?

下面是我注册样式表的方法。

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

}

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

要从其他插件或主题中检测样式表,然后“关闭它们”,真的没有万无一失的方法。您只能猜测其他插件和主题将使用与您注册样式表相同的句柄。然而,如果你的插件仅供个人使用,那么你就可以手动浏览一个插件,获得冲突样式表的句柄,然后自己注销它

您还可以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\' );
}

SO网友:StevenV

避免插件之间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