我尝试向自定义程序动态添加设置、节和控件。借助于this question Weston的回答我已经做到了,我可以通过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;
}
如前所述,保存定制更改后,我看到
portfolio_category_page
数据库中的主题模式,但在重新加载自定义程序后,文本字段为空…
我有没有错过什么步骤?
提前感谢!
最合适的回答,由SO网友:Weston Ruter 整理而成
该字段为空,因为在JS中创建它时,在构造Setting
. 您可能需要在这里通过REST API调用来获取它。
拿着这个example 从Customize Comments 插件:
setting = new api.Setting( customizeId, comment.content.raw, {
transport: \'postMessage\'
} );
api.add( setting );
你可以在插件中看到它是怎样的
fetching comments from the REST API.
但为什么在这里使用动态设置?这似乎应该静态注册,因为它似乎是一次性的。