在BuddyPress中的编辑配置文件页面上验证自定义xprofile字段

时间:2013-11-01 22:50:17

标签: validation email field buddypress

好的,所以我现在几个小时都在为这个问题苦苦挣扎,无法让它发挥作用,但感觉有一种简单而优雅的解决方案。我想要做的就是在成员编辑其信息时验证自定义xprofile电子邮件字段的值。试图模仿xprofile_screen_edit_profile()如何在保存之前返回错误,我尝试将add_action / add_filter / do_action / apply_filter添加到xprofile_updated_profile,xprofile_screen_edit_profile,bp_actions,bp_screens,xprofile_data_value_before_save等等,但我每次都失败可能因为我不知道如何正确使用它们。我想做的就是简单:

 function my_validate_email () {
    if (!empty($field_id->value) && !is_email($field_id->value))
bp_core_add_message( __( 'That email address is invalid. Check the formatting and try again.', 'buddypress' ), 'error' );
//and redirect back to editing, same like for the required fields
}
add_action( 'bp_hook_here', 'my_validate_email' );

请帮助您正确执行此操作,可能不使用其他插件 非常感谢

1 个答案:

答案 0 :(得分:0)

这是一个额外的电子邮件字段吗? 而不是用户的电子邮件与注册有关? 如果它不是附加的电子邮件字段,则使用WP挂钩。 如果是,请看一下bp-xprofile-classes,函数save(),~Line 1032

做这样的事情(未经测试):

function my_validate_email ($this ) {
  // figure out if $this is an array or object and adjust accordingly...

 if ( $this['field_id'] == $the_id_of_your_email_field ) { 
    if (!empty($this['value']) && !is_email($this['value'])) {
       $this['field_id'] = 0;
       bp_core_add_message( __( 'That email address is invalid. Check the formatting and try again.', 'buddypress' ), 'error' );
    }
  }

  return $this;

}
add_action( 'xprofile_data_before_save', 'my_validate_email', 1, 1 );