2016-07-05 2 views
1

Я нашел этот код, который должен обновить поле повторителя в 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

Я отвечу на вопрос ниже. Я использовал функцию, немного отличную от 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, когда цикл через ретранслятор. Надеюсь, это имеет смысл.

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); 

Edit: В моем ответе я пропустил параметр $post_id. Спасибо @Anonymous за то, что вы меня заметили.

Надеюсь, это поможет!

+0

И $ subfield = 'sub_field_2', применимо ко мне или мне нужно изменить «sub_field_» на то, что у меня есть? – Ionut

+0

Я получаю это «Звонок на неопределенную функцию update_sub_field()» – Ionut

+0

Конечно, 'sub_field_2' должно быть именем подполя, которое вы хотите обновить. (Я только что использовал 'sub_field_2' из-за вашего кода). –

Смежные вопросы