在检查了代码和多次尝试和错误后,我有了一个解决方案:
有一个过滤器-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
或者阵列,我认为更难看。我希望这对其他人有帮助!