以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress

Posted

技术标签:

【中文标题】以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress【英文标题】:Update the value of specific group field inside repeater field programmatically - Advanced Custom Field (ACF) - Wordpress 【发布时间】:2022-01-24 06:07:00 【问题描述】:

我在转发器字段中有组字段。我想以编程方式更新特定组字段值的值。

示例 - 下面是一个中继器字段数组。

Array
(
    [0] => Array
        (
            [booking_list] => Array
                (
                    [termin] => November 20, 2021 12:00 am
                    [available_seats] => 5
                )

        )

    [1] => Array
        (
            [booking_list] => Array
                (
                    [termin] => November 30, 2021 12:00 am
                    [available_seats] => 6
                )

        )

)

**我想更新 available_seats 字段的值

已编辑 -: 我尝试了这段代码,但没有工作。

    if( have_rows('booking') ) 
    $i = 0;
    while( have_rows('booking') ) 
        the_row();
        $i++;
        if(have_rows('booking_list'))
            while( have_rows('booking_list') )
                the_row();
                update_sub_field('available_seats', 2);
            
        
    

截图 Click Me

【问题讨论】:

查看 ACF 提供的update_field helper 函数并在上面分享您的尝试。 我已经分享了我尝试过的代码。 @Saqib Amin 【参考方案1】:

您也可以使用update_field。您只需要在数据库中查看meta-key。它通常是这样存储的:parent_booking_list_available_seats。当然不是“父母”,您需要查看数据库。

【讨论】:

感谢您的回答,但我想循环更新该字段,因为如果 termin = 2021 年 11 月 30 日上午 12:00,我有这样的条件,然后更新相同的 available_seats 字段的值组【参考方案2】:

我个人的方法是使用get_field,因为它返回一个数组,您可以循环访问不同的项目并在必要时更新字段。 低于 sn-p 将使所有 available_seats 为 2。如果需要,您可以引入条件逻辑。

$post_id = get_the_ID();
$bookings = get_field( 'booking', $post_id );

foreach ( $bookings as &$booking ) 
    foreach ( $booking['booking_list'] as &$booking_item ) 
        $booking_item['available_seats'] = 2;
    


update_field( 'booking', $booking, $post_id );

【讨论】:

你能确认'booking_list'是repeater还是group? 我试过这段代码,但它不起作用,我不知道它是如何删除除第一组以外的所有组 booking_list 是一个组 见上面的编辑答案。您应该能够根据自己的需要进行调整。 不,它不工作。

以上是关于以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress的主要内容,如果未能解决你的问题,请参考以下文章

当同一转发器字段的值以其他语言更新时,ACF 转发器字段中的值是不是为空?

如何使用触发器生成字段的值?

如何以编程方式将值保存到 JIRA 中的自定义字段中?

Oracle表的更新触发器问题,更新本表的字段。

RxSwift - 当 UITextField 以编程方式更新时,UILabel 字段未更新

更新 ACF 选项页面时,以编程方式更新所有帖子的 ACF 字段