如果我有数组键,如何更新转发器字段?
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
开始。希望它有意义。
我发现这段代码应该更新 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
开始。希望它有意义。