在检查了代码和多次尝试和错误后,我有了一个解决方案:
有一个过滤器-user_profile_update_errors - 在文件中调用的wp-admin/includes/user.php 在Wordpress完成自己的输入验证之后。此过滤器允许插件通过将其添加到引用的WP_Error 班如果过滤器返回后存在任何错误,Wordpress将显示这些错误,并且不会插入/更新任何数据。
因此,我的解决方案是personal_options_update 和edit_user_profile_update 动作挂钩(在user_profile_update_errors 提交表单后立即进行筛选)并使用user_profile_update_errors 筛选到:
从中检索任何输入的数据$_POST,
验证它,返回任何错误,如果没有,请使用更新选项数据库update_user_meta($ID,
$key, $value);.或者,可以使用profile_update 或user_register 操作挂钩(在将Wordpress用户数据添加到数据库之后,在接近尾端的地方调用),将自定义数据添加到选项数据库。这将分割验证和数据库插入,但必须使用全局stdClass 或者阵列,我认为更难看。我希望这对其他人有帮助!