Для того, чтобы следующее работало, вам нужно иметь одно поле add_settings_ для данных. Элементы html-формы в функции обратного вызова поля add_settings_ должны быть массивом.
Пример:
<input type="text" name="field[0]" id="textfield_0" />
<input type="text" name="field[1]" id="textfield_1" />
Если вы создадите форму, подобную этой, WordPress сохранит сериализованные данные в одном поле параметров, что приведет к уменьшению количества запросов к базе данных, и вы сможете добавить в них больше данных позже.
Тогда вы используете, например, jQuery или JavaScript и кнопка для добавления дополнительных полей на страницу параметров.
Дополнительные поля также будут массивом и нумерация начинается там, где заканчивались предыдущие поля формы. Глядя на предыдущий фрагмент кода, вы начинаете:
<input type="text" name="field[2]" id="textfield_2" />
<input type="text" name="field[3]" id="textfield_3" />
Если вы все отлично соединили, ваша базовая форма с количеством полей x будет создана в функции обратного вызова add_settings_field. Дополнительные поля добавляются с помощью jQuery или Ajax.
Теперь у вас может быть случай, когда вы хотите редактировать поля, в этом случае форма должна показывать все предыдущие сохраненные значения и заполнять текстовые поля.
Вы можете сделать это, отправив атрибут с сохраненными значениями в поле add_settings_. Посмотрите, как я решил это для себя в API настроек Wordpress и сериализации данных