我已经为“项目”创建了一个 CPT,并且正在使用中继器字段来跟踪每日“项目更新”。每天,都会使用中继器添加一个新行,并为该特定更新输入相关信息。我正在尝试找到一种方法来捕获添加或修改中继器行(“更新”)的日期/时间,以便我可以在前端输出此信息。
有没有一种相对简单的方法使用 ACF 中继器来完成此任务?
我知道我可以通过为“项目更新”创建另一个 CPT 并使用关系将它们连接在一起来完成这项工作,但我更愿意将更新保留在项目帖子中。这避免了在帖子类型之间来回切换,并有助于避免将更新绑定到错误的项目。
简单: 在中继器行中添加日期和时间字段,添加新行的用户需要正确设置。
高级:向中继器行添加日期和时间字段,该字段是只读的,并通过将中继器行与数据库中的当前行进行比较,在保存后(
acf/save_post
操作)进行更新,并设置以编程方式为任何新行设置日期和时间字段的值(未经测试):
/**
* Priority of five so that it runs before new values are saved.
*/
add_action( 'acf/save_post', static function ( $post_id ) : void {
if ( 'project' !== get_post_type( $post_id ) ) {
return;
}
$current = get_field( 'repeater', $post_id );
$new = $_POST['repeater']; // This is not correct.
if ( $current === $new ) {
return;
}
// Perform logic to compare entries in $new to entries in $current.
}, 5 );