Home › Forums › Front-end Issues › Trigger Error on acf/save_post ?
I’m using the ACF Frontend Form to submit to an external API. Using the acf/save_post
hook I’m posting to the API via wp_remote_post()
. Is there a way at this point to trigger an error if the wp_remote_post()
returns an error? Is there a better hook to do this kind of thing?
At that point there wouldn’t be a way to prevent the post from being submitted.
Your only real option is to create an acf/validate_value https://www.advancedcustomfields.com/resources/acf-validate_value/ filters for the fields and do your own validation to make sure the values will be acceptable to where you are submitting them to.
If there isn’t a way to know this ahead of time it would be extremely difficult.
You’re right that there wouldn’t be a way to prevent the post from being submitted but there is a way to prevent the post being saved which in my use-case works just as well.
The acf/save_post
hook with a priority less than 10 will fire before the post is saved. At this point I hit my API and if it fails I use the following code to redirect.
global $wp;
if( $apifailed ) {
$_POST['acf'] = array();
$query_args = $_GET;
$query_args['updated'] = 'notupdated';
$query_args['errcode'] = 1;
wp_safe_redirect( add_query_arg( $query_args, home_url( $wp->request ) ) );
exit();
}
ACF expected the updated
query var parameter to not be empty ( it assumes 1 ) so to be clear that a post was not updated and that the updated
parameter exists but is not empty I put a string message to indicate this.
Finally, the ACF form runs validate right off the bat, always. At this point I can modify the args to handle the error code:
/**
* Modify the ACF Form args
*
* @param Array $args
*
* @return Array $args
*/
function prefix_modify_form_args( $args ) {
if( isset( $_GET['errcode'] ) ) {
/**
* Can switch the errcode but we'll go with something generic
*/
$args['updated_message'] = esc_html__( 'Something went wrong, XYZ not updated.' );
$args['html_updated_message'] = str_replace( 'class="updated"', 'class="error"', $args['html_updated_message'] );
}
return $args;
}
add_filter( 'acf/validate_form', 'prefix_modify_form_args' );
The topic ‘Trigger Error on acf/save_post ?’ 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.