You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义注册表单:如何在HTML中正确显示错误提示文本

WordPress自定义注册表单错误信息精准显示解决方案

问题核心

你的代码存在两个关键问题:

  • 用print_r($error)直接输出整个错误数组,破坏页面结构且不符合需求
  • 表单中的foreach ($error as $error)存在变量名冲突,会覆盖原错误数组,导致无法正常遍历

修正步骤

  1. 移除全局数组输出:删除else分支里的print_r($error),保留错误数组用于表单局部显示
  2. 按字段匹配错误信息:在每个表单字段下方,检查该字段对应的错误键,仅显示当前字段的错误
  3. 修复变量名冲突:避免遍历变量和原数组同名

修改后的完整代码

<?php
if (is_user_logged_in()) {
    echo '<script type="text/javascript">';
    echo 'alert("Welcome, registered user!");';
    echo 'window.location.href = "Url";';
    echo '</script>';
} else {
    global $wpdb;
    $error = array(); // 初始化错误数组,避免未提交时变量未定义

    if ($_POST) {
        $username = $wpdb->escape($_POST['user_login']);
        $email = $wpdb->escape($_POST['user_email']);
        $taxnumber = $wpdb->escape($_POST['tax_number']);
        $password = $wpdb->escape($_POST['user_pass']);
        $ConfPassword = $wpdb->escape($_POST['user_confirm_password']);

        // 验证规则
        if (strpos($username, ' ') !== FALSE) {
            $error['username_space'] = "Username has Space";
        }
        if (empty($username)) {
            $error['username_empty'] = "Needed Username";
        }
        if (username_exists($username)) {
            $error['username_exists'] = "Username already exists";
        }
        if (!is_email($email)) {
            $error['email_valid'] = "Email has no valid value";
        }
        if (email_exists($email)) {
            $error['email_existence'] = "Email already exists";
        }
        if (empty($taxnumber)) {
            $error['taxnumber_empty'] = "Needed Tax Number"; // 修正原拼写错误texnumber -> taxnumber
        }
        if (strcmp($password, $ConfPassword) !== 0) {
            $error['password_mismatch'] = "Password didn't match";
        }

        if (count($error) == 0) {
            $user_id = wp_create_user($username, $password, $email);
            $userinfo = array(
                'ID' => $user_id,
                'user_login' => $username,
                'user_email' => $email,
                'user_pass' => $password,
                'role'      => 'customer',
            );
            wp_update_user($userinfo);
            update_user_meta($user_id, 'tax_number', $taxnumber);
            
            echo '<script type="text/javascript">';
            echo 'alert("User Created Successfully");';
            echo 'window.location.href = "url";';
            echo '</script>';
            exit();
        }
        // 移除print_r,保留错误数组用于表单显示
    }
?>
<section id="wholesale-custom-register-form">
    <div class="container wholesale-custom-register-form">
        <div class="register-form">
            <div class="register-form-title">
                <h1>Wholesale Register Form</h1>
            </div>
            <div class="wholesale-register">
                <form class="register-fm" method="POST">
                    <div class="form-group">
                        <label>User Name</label>
                        <input class="form-control" type="text" name="user_login" id="user_login" placeholder="Username" />
                        <!-- 显示用户名相关错误 -->
                        <?php if (isset($error['username_space'])) echo '<span style="color:red;">'.$error['username_space'].'</span><br>'; ?>
                        <?php if (isset($error['username_empty'])) echo '<span style="color:red;">'.$error['username_empty'].'</span><br>'; ?>
                        <?php if (isset($error['username_exists'])) echo '<span style="color:red;">'.$error['username_exists'].'</span><br>'; ?>
                    </div>
                    <div class="form-group">
                        <label>Email</label>
                        <input class="form-control" type="email" name="user_email" id="user_email" placeholder="Email" />
                        <!-- 显示邮箱相关错误 -->
                        <?php if (isset($error['email_valid'])) echo '<span style="color:red;">'.$error['email_valid'].'</span><br>'; ?>
                        <?php if (isset($error['email_existence'])) echo '<span style="color:red;">'.$error['email_existence'].'</span><br>'; ?>
                    </div>
                    <div class="form-group">
                        <label>Tax Number</label>
                        <input class="form-control" type="text" name="tax_number" id="tax_number" placeholder="Tax Number" />
                        <!-- 显示税号相关错误 -->
                        <?php if (isset($error['taxnumber_empty'])) echo '<span style="color:red;">'.$error['taxnumber_empty'].'</span><br>'; ?>
                    </div>
                    <div class="form-group">
                        <label>Enter Password</label>
                        <input class="form-control" type="password" name="user_pass" id="user_pass" placeholder="Password" />
                    </div>
                    <div class="form-group">
                        <label>Enter Confirm Password</label>
                        <input class="form-control" type="password" name="user_confirm_password" id="user_confirm_password" placeholder="Confirm Password" />
                        <!-- 显示密码匹配错误 -->
                        <?php if (isset($error['password_mismatch'])) echo '<span style="color:red;">'.$error['password_mismatch'].'</span><br>'; ?>
                    </div>
                    <div class="form-group">
                        <button class="custom-register-btn" type="submit" name="btnsubmit">Register</button> <!-- 修正按钮文字Log In -> Register,符合注册场景 -->
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>
<?php }; ?>

额外优化说明

  • 修正了原代码中texnumber_empty的拼写错误,改为taxnumber_empty,确保错误能正确显示
  • 给错误信息添加了红色样式,提升用户体验
  • 修正了注册按钮的文字,从"Log In"改为"Register",符合表单功能定位
  • 提前初始化$error = array();,避免页面首次加载时因变量未定义报错

内容的提问来源于stack exchange,提问作者Dulanga Weerasuriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:05:26