I find sometimes using acf/save_post
, upping the priority makes sure everything else has run before running the action function.
This might come into play when passing an $post_id
in the get_field()
function, I tend not to pass the $post_id
when using acf/save_post
to make sure the current latest field data is used. But this theory might not be the case. See comments in code below...
<?php
// save post action with priority 20 (default 10)
add_action('acf/save_post', 'set_coach_email', 20);
/**
* @param $post_id int|string
*/
function set_coach_email($post_id) {
// get our current post object
$post = get_post($post_id);
// if post is object
if(is_object($post)) {
// check we are on the team custom type and post status is either publish or draft
if($post->post_type === 'team' && ($post->post_status === 'publish' || $post->post_status === 'draft')) {
// get coach email field
$coach_email = get_field('coach_email');
// if coach email field returns false
if(!$coach_email) {
// coach email default
$email = 'coachtest@test.com';
// update coach email field
update_field('coach_email', $email, $post->ID);
}
}
}
// finally return
return;
}