Support

Account

Home Forums Front-end Issues acf/validate_value only on the front end not in the User area

Solved

acf/validate_value only on the front end not in the User area

  • I don’t want the validation to be in the User area. I only want the front end to have the validation. I did a condition which will return if it is the admin page by using is_admin(). I’ve also tried wrapping the following code inside function in a !(is_admin). What happens is when the page is posted it goes to a page with the /?updated=true and displays the error message. It is not like before where you get a red box above the input field that says the error. So basically I want the validation to only happen on the front end. Admins can edit users in the backend without any problems. Please help I’m so close.

    function my_acf_validate_value( $valid, $value, $field, $input ) {
    	
    	if( is_admin() ) {
    		return $valid;
    	}
    	
    	$current_id = get_current_user_id();
    	$wp_user_id = 'user_' . $current_id;
    	$current_email = get_the_author_meta('user_email', $current_id);
    	
    	if($value == "" || $value == " ") {
    		$valid = "Email field cannot be empty";
    	} elseif( email_exists($value) && $value != $current_email ) {
    		$valid = "This email already exists. Use a unique email";
    	}
    	return $valid;
    	
    }
  • Looking at another thread I saw ended up doing this:

    function my_acf_validate_value( $valid, $value, $field, $input ) {
    	
    	$current_id = get_current_user_id();
    	$wp_user_id = 'user_' . $current_id;
    	$current_email = get_the_author_meta('user_email', $current_id);
    	
    	if( $_POST['acf']['register'] == 'true' ) {
    		if($value == "" || $value == " ") {
    			$valid = "Email field cannot be empty";
    		} elseif( email_exists($value) && $value != $current_email ) {
    			$valid = "This email already exists. Use a unique email";
    		}
    	}
    	return $valid;
    	
    }

    and I added a hidden field called ‘register’ to ‘html_after_fields’ to the form which the above checked. See what I did here:

    function zUpdate( $atts, $content = null ) {
    	
    	$current_id = get_current_user_id();
    	$user_id = 'user_' . $current_id;	
    	
    	$options = array(
    	    'post_id' => $user_id,
    	    /* my field group grabs unit, home phone, and cell phone acf */
    	    'field_groups' => array('3307', ),
    	    'submit_value' => 'Update',
    	    'html_after_fields' => '<input type="hidden" name="acf[register]" value="true"/>',
    	);
    	$form = acf_form( $options );
    	return $form;	
    
    }
Viewing 2 posts - 1 through 2 (of 2 total)

The topic ‘acf/validate_value only on the front end not in the User area’ is closed to new replies.