正在验证新用户注册字段

时间:2012-12-17 作者:The Salt

What I\'m trying to do:

  • 添加新的用户元字段,用户编辑其配置文件时可以更新这些元字段,提交表单时正确验证这些元字段

    What I\'ve done:

    我已成功将这些字段添加到用户编辑表单中,并将其更新到选项数据库中,如下所示:

    public function setup_user_meta() {
        // Show the fields when editing or showing
        add_action(\'show_user_profile\', array($this,\'show_user_meta\'));
        add_action(\'edit_user_profile\', array($this,\'show_user_meta\'));
        // Update the fields
        add_action(\'personal_options_update\', array($this,\'process_option_update\'));
        add_action(\'edit_user_profile_update\', array($this,\'process_option_update\'));
    }
    

    public function show_user_meta($user) {
        ?>
    
    <h3>Player Information</h3>
    <table class="form-table">
        <tbody>
            <tr>
                <th><label for="cuhc-description">Description</label></th>
                <td><textarea name="cuhc-description" id="cuhc-description" rows="5" cols="30"><?php echo esc_textarea(get_the_author_meta(\'cuhc-description\', $user->ID)); ?></textarea>
            </tr>
        </tbody>
    </table>
    
    <?php
        }
    

        public function process_option_update($userid) {
            update_user_meta($userid, \'cuhc-description\', ( isset($_POST[\'cuhc-description\']) ? $_POST[\'cuhc-description\'] : \'\' ) );
        }
    

    What I want:

    这是可行的,但是我有许多不同的字段,我想在中验证它们process_option_update(), 例如:检查它们是一个数字,如果不向用户返回错误。

    我如何告诉Wordpress有错误并且不继续对表单执行操作?我在哪里回显或发送错误?Wordpress似乎还在用户更新页面中使用javascript验证——我如何利用它而不是自己进行验证?

1 个回复
最合适的回答,由SO网友:The Salt 整理而成

在检查了代码和多次尝试和错误后,我有了一个解决方案:

有一个过滤器-user_profile_update_errors - 在文件中调用的wp-admin/includes/user.php 在Wordpress完成自己的输入验证之后。此过滤器允许插件通过将其添加到引用的WP_Error 班如果过滤器返回后存在任何错误,Wordpress将显示这些错误,并且不会插入/更新任何数据。

因此,我的解决方案是personal_options_updateedit_user_profile_update 动作挂钩(在user_profile_update_errors 提交表单后立即进行筛选)并使用user_profile_update_errors 筛选到:

从中检索任何输入的数据$_POST,

  • 验证它,
  • 返回任何错误,
  • 如果没有,请使用更新选项数据库update_user_meta($ID, $key, $value);.profile_update 或user_register 操作挂钩(在将Wordpress用户数据添加到数据库之后,在接近尾端的地方调用),将自定义数据添加到选项数据库。这将分割验证和数据库插入,但必须使用全局stdClass 或者阵列,我认为更难看。

    我希望这对其他人有帮助!

  • 结束

    相关推荐

    Comment form validation

    如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除[email protected]).如何验证主页字段?