2020-06-28 / 1497阅 / 悠然
从现有的“中继器”或“灵活内容”子字段值中删除一行数据。
此功能可以在have_rows()
循环内部或外部使用。在内部使用时,当前行将用于更新子字段值。在外部使用时,必须指定行和父对象以定位正确的值位置。
请注意,此功能用于修改子字段值。要修改父字段值,请使用delete_row()函数。
delete_sub_row($selector, $row, [$post_id])
$selector
(字符串|数组) (必需) 子字段名称或键,或祖先和行号的数组。$row
(int) (必需) 要更新的行号。$post_id
(混合) (可选) 保存值的帖子ID。默认为当前帖子。(布尔)成功更新为true,失败更新为false。
本示例说明如何从称为“ images”的现有嵌套转发器字段中删除一行数据。此嵌套的转发器字段包含3个子字段(“图像”,“ alt”,“链接”)。
// Loop over all staff members.
if( have_rows('staff_members') ) {
while( have_rows('staff_members') ) {
the_row();
// Delete this staff member's first image.
delete_sub_row('images', 1);
}
}
本示例说明如何删除have_rows()
循环外的一行数据。在此,为$selector
参数提供了一个包含字段名和行号混合的数组。该数组应从左到右读取,父子关系由行号分隔。
请参阅有关索引偏移量的注释。
// Delete the first staff member's first image.
delete_sub_row( array('staff_members', 1, 'images'), 1 );
// Update the first staff member's second image.
delete_sub_row( array('staff_members', 1, 'images'), 2 );
当使用特定的行号作为子字段的目标时,请注意,行号从1开始而不是0。这意味着第一行的索引为1,第二行的索引为2,依此类推。
要从0开始索引,请像这样使用row_index_offset设置。
add_filter('acf/settings/row_index_offset', '__return_zero');