Как в админке WordPress дублировать уже заполненные кастомные поля ACF?
Всем привет. В Wordpress с помощью ACF реализованы кастомные поля с большой вложенностью (пример на скрине)
Внутренних полей "Вкладка" можно создавать неограниченное кол-во. Вопрос: можно ли в админке дублировать только поле "Вкладка" со всеми вписанными в неё данными? Попробовал разные плагины, в них получается дублировать только самое верхнее поле (на примере это поле называется "Продаем", внутри которого находится "Вкладка").
Дополнительно:
Здравствуйте. Можете подробнее описать задачу? Хотел бы помочь, но пока запутался что именно надо скопировать и с какой целью.
Чисто случайно понял как это сделать. Нужно, находясь в фокусе нужного поля, зажать Shift и тогда иконка "+" для создания нового поля становится иконкой "Дублировать"
Вот как это выглядит
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Если речь про ACF Repeater/Flexible Content, то дублирование “одной вкладки” со всеми вложенными данными зависит от версии ACF и от того, как именно построено поле. В новых версиях ACF у строк repeaters обычно есть кнопки управления строкой: добавить, удалить, свернуть и иногда duplicate. Но если поле сильно вложенное или используется старый ACF, встроенного удобного копирования может не быть.
Самый безопасный вариант — не копировать данные через базу, а использовать штатные действия в админке ACF: наведите на строку повторителя, откройте управление строкой справа и проверьте, есть ли действие Duplicate. Если оно есть, дублируется именно строка повторителя со всеми подполями, а не весь верхний блок.
Если кнопки нет, есть три пути:
Для сложных повторителей важно понимать, что ACF хранит данные в
postmetaне одним JSON, а множеством строк с ключами видаfield_...и индексами. Поэтому ручное копирование через SQL легко ломает структуру. Если нужно массово дублировать блоки, лучше писать отдельный скрипт черезget_field()иupdate_field():$rows = get_field('cat_list', $post_id); if (is_array($rows) && isset($rows[0])) { $rows[] = $rows[0]; // дублируем первую строку повторителя update_field('cat_list', $rows, $post_id); }
Итог: для ручной работы ищите duplicate именно на строке repeater/flexible content. Для массовой операции используйте PHP через API ACF, а не прямую правку базы.