我正在尝试使用JS API创建定制器控件。定义控件设置的正确方法是什么?
这是我当前的代码:
var mySetting = new api.Setting( \'section_title\', \'Hello World!\' );
api.add( mySetting );
api.control.add( new api.Control( \'section_title\', {
type: \'text\',
section: \'custom-section\',
setting: mySetting,
label: \'Enter your custom title\'
} ) );
当我尝试保存更改时,自定义程序显示错误:“设置不存在或无法识别。”
最合适的回答,由SO网友:Weston Ruter 整理而成
必须以某种方式在PHP中注册设置。如果您没有通过$wp_customize->add_setting()
通话时,您必须通过customize_dynamic_setting_args
滤器为什么?为了安全存储设置,必须由服务器对其进行清理和验证。依赖客户端消毒和验证是危险的。此外,Customizer设置将持久化到DB中,并实际将更改应用到站点。这意味着WordPress需要知道设置的用途、预览方式以及保存方式。因此,您可以在JS中自由创建设置,但必须创建customize_dynamic_setting_args
滤器您可以使用此过滤器将给定的设置ID与您定义的特定模式进行匹配。这方面的例子可以在小部件和导航菜单项的核心中找到。