讨论设置里勾了必须登录才能评论,退出登录后文章底部照旧有输入框,填完提交弹出一行 403,用户完全不知道为什么。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,模板没有判断 is_user_logged_in,评论框照样渲染出来。核心只在校验阶段拦截,前端不会主动隐藏。主题用了自定义表单时,连登录提示都省了。
「评论登录限制」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
<?php if (get_option('comment_registration') && !is_user_logged_in()) : ?>
<p>请先 <a href="<?php echo wp_login_url(get_permalink()); ?>">登录</a> 后评论</p>
<?php else : comment_form(); endif; ?>
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
具体做法是,模板里先判断登录状态,未登录只输出登录链接和一句说明;表单外层加 comment_registration 的判断,两处条件保持一致;登录后跳回当前文章,redirect_to 带上评论锚点,别让用户重新找位置。
最后用这个标准收尾,退出登录后评论区只显示登录提示,登录后回到同一篇文章的评论区。
