首页 WordPress函数大全 delete_sub_field()
购买会员请联系客服,QQ 248758228

delete_sub_field()

2020-06-28 / 239阅 / 秦自龙

本视频需要登录以后才能播放

登录

描述

删除特定子字段的值。

此功能可以在have_rows()循环内部或外部使用。在内部使用时,当前行将用于删除子字段值。在外部使用时,必须指定行和父对象以定位正确的值位置。

参量

delete_sub_field($selector, [$post_id]); 
  • $selector (字符串|数组) (必需) 子字段名称或键,或祖先和行号的数组。
  • $post_id (混合) (可选) 保存值的帖子ID。默认为当前帖子。

返回

(布尔)成功删除时为true,失败则为false。

变更记录

  • 在版本5.0.0中添加

例子

删除have_rows()循环内的子字段

本示例说明如何遍历Repeater字段并从每一行中删除其子字段值之一。

if( have_rows('repeater') ) {
    while( have_rows('repeater') ) {
        the_row();
        delete_sub_field('caption');
    }
} 

删除have_rows()循环外的子字段

本示例说明如何在have_rows()循环外部删除子字段值。在此,为$selector参数提供了一个包含字段名和行号混合的数组。该数组应从左到右读取,父子关系由行号分隔。

请参阅有关索引偏移量的注释。

// Delete "caption" within the first row of "repeater".
delete_sub_field( array('repeater', 1, 'caption') ); 

删除嵌套的子字段

delete_sub_field()函数还可用于在have_rows()循环内部和外部定位嵌套子字段。本示例说明如何使用这两种方法删除嵌套的子字段函数。

// Loop over parent rows.
if( have_rows('repeater') ) {
    while( have_rows('repeater') ) {
        the_row();

        // Loop over child rows.
        if( have_rows('sub_repeater') ) {
            while( have_rows('sub_repeater') ) {
                the_row();

                // Delete nested sub field value.
                delete_sub_field('sub_sub_field');
            }
        }
    }
}

// target a nested sub field directly.
delete_sub_field( array('repeater', 1, 'sub_repeater', 2, 'sub_sub_field') ); 

笔记

索引偏移

当使用特定的行号作为子字段的目标时,请注意,行号从1开始而不是0。这意味着第一行的索引为1,第二行的索引为2,依此类推。

要从0开始索引,请像这样使用row_index_offset设置。

functions.php

add_filter('acf/settings/row_index_offset', '__return_zero'); 
大家谈论
    我的见解