Home › Forums › Front-end Issues › Validation a front-end form
I am trying to validate a front-end form created with ACF. There are two fields that the user can choose to fill out, but they have to fill out at least one of them. Usually, when I validate a form I just use the $_POST object and check it before saving the post to the database (or display an error) but with ACF the field names seem unconventional and I can’t quite figure out how to do it.
The below code is what I’ve tried most recently. The check for the two fields always returns false, even if there something in at least one of them. I’ve also tried putting the slug of the custom fields with no luck.
How do you suggest the best way to validate a front-end form is?
//Create new Custom Design post from frontend
function my_pre_save_post( $post_id )
{
// check if this is to be a new post
if( $post_id != 'new' )
{
return $post_id;
}
if ( (isset( $_POST['field_5259b4ae85a65'] ) && !empty( $_POST['field_5259b4ae85a65'] ))
||
(isset( $_POST['field_5259b4be85a66'] ) && !empty( $_POST['field_5259b4be85a66'] )) ){
// Create a new post
global $current_user;
get_currentuserinfo();
$title = $current_user->user_email.'-'.get_date();
$post = array(
'post_status' => 'publish' ,
'post_title' => $title,
'post_type' => 'custom-designs' ,
);
// insert the post
$post_id = wp_insert_post( $post );
// update $_POST['return']
$_POST['return'] = add_query_arg( array('post_id' => $post_id, 'submitted' => 'true', 'custom-error' => false), $_POST['return'] );
// return the new ID
return $post_id;
} else {
wp_redirect(add_query_arg(array('custom-error' => 'true'), $_POST['return']));
exit;
}
}
add_filter('acf/pre_save_post' , 'my_pre_save_post' );
The issue here is that you are assuming the wrong $_POST key.
All acf fields are posted as an array at $_POST[‘fields’];
Perhaps you should debug the $_POST array to see how the data is formatted.
Thanks
E
Thanks! That makes sense now. For the sake of others, this is the working conditional statement I’m using:
if ( (isset( $_POST['fields']['field_5259b4be85a66'] ) && !empty( $_POST['fields']['field_5259b4be85a66'] ))
||
(isset( $_POST['fields']['field_5259b44f99143'] ) && !empty( $_POST['fields']['field_5259b44f99143'] )) ){
where did you find the fields object id (eg field_5259b4be85a66)
thanks
Sorry – I searched, I found, I was ashamed!
Its under screen options for other dufuses
The topic ‘Validation a front-end form’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.