我发现这个代码应该更新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()。
答案 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
开始循环到转发器时。希望它有意义。