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

时间:2016-07-05 09:41:25

标签: php wordpress advanced-custom-fields

我发现这个代码应该更新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()。

2 个答案:

答案 0 :(得分:1)

如果您想更新 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让我注意到这一点。

我希望这有帮助!

答案 1 :(得分:1)

我将在下面回答我的问题。我使用了一个与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开始循环到转发器时。希望它有意义。