自定义控件不显示通过JS API添加的设置值

时间:2017-12-11 作者:Florian Brinkmann

我尝试向自定义程序动态添加设置、节和控件。借助于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 数据库中的主题模式,但在重新加载自定义程序后,文本字段为空…

我有没有错过什么步骤?

提前感谢!

1 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

该字段为空,因为在JS中创建它时,在构造Setting. 您可能需要在这里通过REST API调用来获取它。

拿着这个exampleCustomize Comments 插件:

setting = new api.Setting( customizeId, comment.content.raw, {
    transport: \'postMessage\'
} );
api.add( setting );
你可以在插件中看到它是怎样的fetching comments from the REST API.

但为什么在这里使用动态设置?这似乎应该静态注册,因为它似乎是一次性的。

结束

相关推荐