Ожидаемое поведение:
Когда пользователь обновляет ACF на панели инструментов WP и нажимает кнопку UPDATE, код проверяет наличие обновлений. Статус поле и, если значения изменились, также изменит Последнее обновление поле, затем сохраните всю информацию.
реальность:
Общий контент обновляется, но Последнее обновление поле не зависит от update_sub_field код. Однако, если я удалю строку возврата $ post в конце, Последнее обновление поле сохраняется, но общий контент возвращается к исходным значениям (не сохраняется).
Мне нужно, чтобы оба были спасены! У меня есть ощущение, что все происходит не в правильном порядке, и я могу сделать это, если просто найду подходящий фильтр / действие для выполнения, но пока ни один из них не работал с приведенным ниже кодом (пробовал разные приоритеты как аргументы, а)
add_action( 'acf/save_post' , 'update_post');
add_action( 'save_post' , 'update_post');
add_filter( 'wp_insert_post_data' , 'update_post');
Любая помощь с благодарностью. Спасибо!
function update_post( $post ) {
$projectCount = -1;
if( have_rows('project') ):
while( have_rows('project') ): the_row();
$taskCount = -1;
$projectCount++;
if( have_rows('project_issue') ):
while( have_rows('project_issue') ): the_row();
$taskCount++;
$oldValue = get_sub_field('project_current_status');
$newValue = $_POST['acf']['field_594afbf65e909'][$projectCount]['field_594afd675e90d'][$taskCount]['field_594c05c666a9f'];
$date = date('Ymd');
$updated = ($oldValue !== $newValue) ? 'true' : 'false';
if ( $updated == 'true' ) {
update_sub_field('project_last_update', $date);
}
endwhile;
endif;
endwhile;
endif;
return $post;
}
Задача ещё не решена.
Других решений пока нет …