WordPress登录后移除首页注册按钮问题求助
你的代码为啥会导致站点报错?
原来的代码有三个致命问题:
- 直接在PHP函数里写CSS代码,PHP根本认不出
.hide-me { display: none; }这种语法,直接触发解析错误 - 函数最后多了一个多余的
},把代码结构搞乱了 - 用了
init钩子,这个钩子跑太早了,用户的登录状态还没初始化完成,is_user_logged_in()判断不准
正确的解决方法
方法1:用PHP输出条件样式(适合免费版Elementor)
把下面的代码放到子主题的functions.php里,它会在用户登录且处于首页时,输出隐藏按钮的CSS:
function hide_register_button_for_logged_in_users() { // 只在首页生效,符合你的需求 if ( is_front_page() && is_user_logged_in() ) { ?> <style> .hide-me { display: none !important; } </style> <?php } } add_action( 'wp_head', 'hide_register_button_for_logged_in_users' );
为啥这么写?
- 用
wp_head钩子,这个时机用户登录状态已经确定了,判断不会出错 - 加
is_front_page()确保只在首页隐藏按钮,其他页面不受影响 !important是为了盖过Elementor给按钮加的内联样式,保证隐藏生效
方法2:Elementor Pro自带的条件显示(不用写代码更省心)
如果你有Elementor Pro,直接用编辑器自带功能就行:
- 选中你加了
.hide-me类的注册按钮 - 右侧面板点高级标签,找到条件显示
- 添加条件:选「用户状态」→「未登录」
- 保存后,按钮只会在用户没登录的时候显示
注意事项
- 改
functions.php之前一定要先备份文件,万一写错代码还能恢复 - 加完代码后记得清一下站点缓存,不然可能看不到效果
内容的提问来源于stack exchange,提问作者Oskar Hanborg
相关产品推荐
相关产品推荐

