0

好的,所以我现在已经为此苦苦挣扎了几个小时并且无法让它工作,但感觉就像有一个简单而优雅的解决方案。我要做的就是在成员编辑其信息时验证自定义 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' );

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

4

1 回答 1

1

这是一个额外的电子邮件字段吗?而不是与注册相关的用户电子邮件?如果它不是额外的电子邮件字段,则使用 WP 挂钩。如果是,请查看 bp-xprofile-classes, function 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 );
于 2013-11-03T14:47:30.197 回答