如果我有数组键,如何更新转发器字段?

How to update repeater field if I have the array key to it?

我发现这段代码应该更新 ACF Wordpress 中的转发器字段。我的中继器有 3 列。我只需要更新转发器中一列的某个字段。如何使用此代码执行此操作:

// save a repeater field value
$field_key = "field_3424324234";
$value = array(
    array(
        "sub_field_1"   => "Foo",
        "sub_field_2"   => "Bar"
    )
);
update_field( $field_key, $value, $post_id );

我需要说明一下,我没有 PRO 许可证,无法使用 update_sub_field()。

如果您想更新 Repeater 中的子字段,您应该使用 update_sub_field 而不是 update_field

我假设(根据你的代码片段)你没有用 have_rows 迭代中继器,所以假设你想更新第三行的 sub_field_2,它会是这样的:

$subfield = 'sub_field_2';
$row = 3;
$new_value = 'The new value of the field';
update_sub_field( array( $field_key, $row, $sub_field ), $new_value, $post_id );

编辑: 我在回答中遗漏了 $post_id 参数。谢谢@Anonymous 让我注意到这一点。

希望对您有所帮助!

我会在下面回答我的问题。我使用了一个与 update_field 略有不同的函数,称为 update_sub_field。为此,您需要拥有 ACF Pro 5+。 Jordi Nebot 的回答对我有所帮助,但就我而言,我需要添加一些额外的变量($post_id)。就是这样,希望能帮到别人:

update_sub_field( array("repeater_field_key", $row+1, "repeater_sub_field_key"), $new_value, $post_id);

我添加了$row+1,因为$row数从1开始,当$row循环通过中继器时,起始位置从0开始。希望它有意义。