Настроить элемент управления не показывает значение настройки, которое было добавлено через JS API

Я пытаюсь динамически добавлять настройки, разделы и элементы управления в customizer. С помощью этого вопроса и ответа Уэстон я уже делал это до сих пор, что могу добавить элемент управления и настройки через JS api, который будет сохранен в базе данных. Моя проблема заключается в том, что после перезагрузки адаптера поле управления пуст.

Это код JS:

var setting = new wp.customize.Setting( 'portfolio_category_page' ); wp.customize.add( setting ); // Add control to select the category to show on the page. wp.customize.control.add( new wp.customize.Control('portfolio_category_page', { setting: setting, type: 'text', section: 'hannover_portfolio_category_page', label: 'Choose page', }) ); 

И текущая функция, которая подключается к фильтру customize_dynamic_settings_args :

 function hannover_filter_dynamic_setting_args( $setting_args, $setting_id ) { if ( 'portfolio_category_page' === $setting_id ) { $setting_args = array( 'type' => 'theme_mod', ); } return $setting_args; } 

Как сказано, после сохранения изменений customizer я вижу portfolio_category_page темы mod в базе данных, но после перезагрузки Customizer текстовое поле пуст …

Есть ли какой-то шаг, который я пропустил?

Заранее спасибо!

Поле пуст, потому что когда вы создаете его в JS, вы не предоставляете ему значение в качестве второго параметра при создании параметра. Вы должны получить его с помощью вызова REST API, предположительно здесь.

Возьмите этот пример из плагина Customize Comments :

 setting = new api.Setting( customizeId, comment.content.raw, { transport: 'postMessage' } ); api.add( setting ); 

Вы можете видеть в плагине, как он извлекает комментарии из REST API .

Но зачем здесь использовать динамическую настройку? Похоже, он должен быть зарегистрирован статически, так как он кажется одним.