Ultimate Member注册表单添加Passcode验证功能异常求助
Ultimate Member注册表单添加Passcode验证功能异常求助
你好,我帮你分析下这段代码可能存在的问题以及对应的解决方案:
可能的问题点及排查方向
字段名匹配问题
首先要确认你的注册表单中Passcode字段的name属性确实是user_passcode,如果字段名不一致,$post_form['user_passcode']就无法获取到对应的值,自然不会触发验证逻辑。你可以通过浏览器开发者工具查看表单字段的name属性,确保和代码里的字段名完全一致。钩子优先级问题
um_submit_form_register钩子可能存在执行顺序的问题,如果你的代码执行时机太晚,可能表单已经完成提交流程了,错误提示无法正常显示。可以尝试给add_action添加更高的优先级(数值越小执行越早),比如把优先级从默认的10改成5。输入空格干扰问题
你的代码里直接对比输入值和"Banana",如果用户不小心输入了前后空格,就会被判定为错误,这可能是你没考虑到的场景。错误拦截逻辑疏漏
原代码的两个判断是独立执行的,即使第一个判断触发了空字段错误,第二个判断仍会继续运行,虽然不影响功能,但会造成不必要的逻辑执行。
优化后的代码示例
add_action("um_submit_form_register","um_122221_submit_form_register", 5, 1); function um_122221_submit_form_register( $post_form ){ // 先检查字段是否存在 if( !isset( $post_form['user_passcode'] ) ){ UM()->form()->add_error('user_passcode', __( 'Passcode field is missing.', 'ultimate-member' ) ); return; } // 验证字段非空(自动过滤前后空格) $passcode = trim($post_form['user_passcode']); if( empty( $passcode ) ){ UM()->form()->add_error('user_passcode', __( 'Passcode field can\'t be blank.', 'ultimate-member' ) ); return; } // 验证Passcode正确性 if( "Banana" !== $passcode ){ UM()->form()->add_error('user_passcode', __( 'Passcode is incorrect.', 'ultimate-member' ) ); return; } }
你可以先排查表单字段名是否正确,再替换成优化后的代码测试效果。
备注:内容来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

