如何为特定用户设置display:none?当前代码无法生效求助
解决特定用户隐藏元素的CSS不生效问题
问题原因
admin_init钩子执行时机过早,此时后台页面还未开始渲染,直接输出的CSS无法被正确插入到页面的<head>区域,导致样式不生效。- 自定义CSS可能被其他更高优先级的样式规则覆盖。
修正方案
方案1:使用正确的钩子输出样式
替换admin_init为admin_head钩子,这个钩子会在后台页面的<head>标签内执行,确保样式被正确注入:
function wp_hide_link() { $user_id = get_current_user_id(); if($user_id == 3){ echo "<style> .fieldset-shipping{display: none !important;}</style>"; } } add_action('admin_head', 'wp_hide_link');
方案2:验证用户ID是否正确获取
如果不确定当前用户ID是否被正确获取,可以添加调试代码确认:
function wp_hide_link() { $user_id = get_current_user_id(); // 调试用:输出当前用户ID到日志,测试完成后删除 error_log('当前登录用户ID:' . $user_id); if($user_id == 3){ echo "<style> .fieldset-shipping{display: none !important;}</style>"; } } add_action('admin_head', 'wp_hide_link');
额外提示
- 添加
!important是为了提升样式优先级,避免被其他同权重或更高权重的样式覆盖。 - 如果需要在前端页面(非后台)实现此效果,将
admin_head替换为wp_head钩子即可。
内容的提问来源于stack exchange,提问作者kpmrpar
相关产品推荐
相关产品推荐

