Я хочу обновить поле при удалении пользовательского типа записи (CPT).Прямо сейчас у меня есть поле отношений стажеров как часть группы полей учебного курса.Поле стажеров заполняет значения из CPT стажера.
Я рассчитываю места обучения, оставленные с кодом ниже, каждый раз, когда обновляется курс обучения:
function my_acf_save_post( $post_id ) {
// get new value
$number_of_places_available = get_field('number_of_places_available');
$number_of_trainees = count(get_field('trainees'));
if ( empty(get_field('trainees')) ) {
$number_of_places_left = $number_of_places_available;
} else {
$number_of_places_left = $number_of_places_available - $number_of_trainees;
}
// do something
update_field('number_of_places_left', $number_of_places_left, $post_id);
}
add_action('acf/save_post', 'my_acf_save_post', 20);
Остальныеучебные курсы - это доступное только для чтения поле в бэкэнде, которое рассчитывается.
Я хочу обновить оставшиеся места для тренировок, оставшиеся после того, как стажер фактически удален (перемещен в корзину).В настоящее время, когда я удаляю стажера, мне нужно сохранить учебный курс, которому обучаемый принадлежит, чтобы остальные места обучения корректно обновлялись.Я хотел бы обновить это поле, когда стажер фактически удален, и мне не нужно сохранять учебный курс.
Я пытаюсь использовать переходы после состояния, чтобы сделать это, но, похоже, это не работает,Это означает, что когда я обновляю учебный курс в бэкэнде, даже если стажер был удален из поля отношений, количество доступных мест не было обновлено и обновляется только после сохранения учебного курса:
function on_publish_trash_post( $post ) {
if ($post->post_type != 'trainee'){
return;
}
// get new value
$number_of_places_available = get_field('number_of_places_available');
$number_of_trainees = count(get_field('trainees'));
if ( empty(get_field('trainees')) ) {
$number_of_places_left = $number_of_places_available;
} else {
$number_of_places_left = $number_of_places_available - $number_of_trainees;
}
// do something
update_field('number_of_places_left', $number_of_places_left, $post->ID);
}
add_action( 'publish_to_trash', 'on_publish_trash_post', 10, 1 );
Что я делаю не так?