WordPress如何仅在指定插件安装时注册加载额外样式表
完全可以实现,用WordPress内置的插件状态检测函数就能做到,按插件拆分CSS按需加载是很实用的优化手段,不存在什么问题太基础的说法。
实现核心逻辑
- 插件激活状态检测直接用WordPress自带的
is_plugin_active()函数即可,你当前是在admin_init钩子下执行后台样式加载逻辑,这个函数在后台环境可以直接调用,不需要额外引入依赖文件。 - 判断插件是否激活需要传入对应插件的主入口文件路径,格式为
插件目录名/插件入口php文件名,常用插件的路径参考:- WooCommerce:
woocommerce/woocommerce.php - ACF 免费版:
advanced-custom-fields/acf.php - ACF Pro版:
advanced-custom-fields-pro/acf.php
- WooCommerce:
- 把所有后台通用的基础样式保留在你原有的
admin.css中,不同插件专属的自定义样式拆分为独立CSS文件,只有检测到对应插件处于激活状态时,才注册加载对应的专属样式文件。
调整后的代码示例
// 后台按需加载自定义样式 function hits_admin_colour_scheme() { // 加载全局通用后台样式 wp_register_style('hits_admin_colour_scheme', plugins_url('/assets/css/admin.css',__FILE__ )); wp_enqueue_style('hits_admin_colour_scheme'); // WooCommerce激活时加载对应专属样式 if (is_plugin_active('woocommerce/woocommerce.php')) { wp_register_style('hits_admin_wc_style', plugins_url('/assets/css/admin-wc.css',__FILE__ )); wp_enqueue_style('hits_admin_wc_style'); } // ACF(免费/Pro版任意一个激活)时加载对应专属样式 if (is_plugin_active('advanced-custom-fields/acf.php') || is_plugin_active('advanced-custom-fields-pro/acf.php')) { wp_register_style('hits_admin_acf_style', plugins_url('/assets/css/admin-acf.css',__FILE__ )); wp_enqueue_style('hits_admin_acf_style'); } // 其他插件的按需加载逻辑,参照上面的格式追加即可 } add_action( 'admin_init','hits_admin_colour_scheme');
补充说明
如果你后续需要把同类判断逻辑移到前端场景使用,可能会遇到is_plugin_active()函数未定义的问题,只需要在判断前先引入依赖文件即可:
if (!function_exists('is_plugin_active')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; }
你当前纯后台加载样式的场景不需要加这段代码。
内容的提问来源于stack exchange,提问作者holdergee
相关产品推荐
相关产品推荐

