Просто какое-то дополнение к ответу Анджели Макалансаг, что хорошо.
Это для wordpress версии ‹5, так как в новой версии есть функция add_row (), которая решает проблему.
Печальная часть - $ field_key - проблема. Это ключ, который вы можете найти в администрировании WordPress в списке столбцов настраиваемых полей, но вам нужно нажать на «Параметры экрана» в верхней части экрана, а затем установить флажок «Показать ключ поля». Этот ключ выглядит как «field_5c7d3d0cbcbd1», а имя нашего поля повторителя выглядит как «orders».
update_field( 'orders', $value, $user_id );
Будет работать нормально, только если вы добавили в администрировании вручную хотя бы одну запись в поле репитера. Если вы попытаетесь вставить с помощью php в пустое поле репитера, страница администрирования этого сообщения выйдет из строя при ошибке тайм-аута.
update_field( 'field_5c7d3d0cbcbd1', $value, $user_id );
Будет работать, даже если ретранслятор еще пуст.
Это создает проблемы, когда у вас есть несколько экземпляров wordpress (или версия localhost) и вы создаете таблицы в администрировании. Поскольку у каждого из них будет свой ключ.
Мне не удалось найти рабочий способ получить значение ключа в зависимости от случайного имени столбца. Единственное решение, которое я смог найти, заключалось в поиске в базе данных нового созданного ключа и переопределении его во всех местах (около 7 из них) на значение, которое я сгенерировал на localhost, чтобы один и тот же код мог работать с несколькими проектами.
Это только для ретрансляторов, для полей non Repeater acf у меня не было проблем с использованием этой функции:
function acf_updateValue($fieldname, $value, $post_id){
$field_key = 'field_' . uniqid();
update_post_meta($post_id, $fieldname, $value);
update_post_meta($post_id, '_'.$fieldname, $field_key);
update_field($field_key, $value, $post_id);
}
Используется, например, как -
acf_updateValue('orderFinished', true, $post_id)
- но это не работает с полями повторителя.
person
Jiro Matchonson
schedule
06.03.2019