我的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\' );
}
最合适的回答,由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