2020-06-28 / 1594阅 / 悠然
将新的数据行添加到“中继器”或“灵活内容”子字段值。
此功能可以在have_rows()
循环内部或外部使用。在内部使用时,当前行将用于更新子字段值。在外部使用时,必须指定行和父对象以定位正确的值位置。
请注意,此功能用于修改子字段值。要修改父字段值,请使用add_row()函数。
add_sub_row($selector, $value, [$post_id]);
$selector
(字符串|数组) (必需) 子字段名称或键,或祖先和行号的数组。$value
(数组) (必需) 新行数据。$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();
// Get this staff member's name.
$name = get_sub_field('name');
// Append new row to this staff member's images.
$row = array(
'image' => 123,
'alt' => "Another photo of $name",
'link' => 'http://website.com'
);
add_sub_row('images', $row);
}
}
本示例说明如何在have_rows()
循环外部添加新的数据行。在此,为$selector
参数提供了一个包含字段名和行号混合的数组。该数组应从左到右读取,父子关系由行号分隔。
请参阅有关索引偏移量的注释。
// Update only the first staff member's images.
$row = array(
'image' => 123,
'alt' => "Another photo of the first staff member",
'link' => 'http://website.com'
);
add_sub_row( array('staff_members', 1, 'images'), $row );
当使用特定的行号作为子字段的目标时,请注意,行号从1开始而不是0。这意味着第一行的索引为1,第二行的索引为2,依此类推。
要从0开始索引,请像这样使用row_index_offset设置。
add_filter('acf/settings/row_index_offset', '__return_zero');