2017-05-09 145 views
0

我的问题:
我已经用自定义器中的颜色输入替换了支持alpha通道的输入。 Wordpress的消毒功能仅适用于十六进制颜色,但我获得了rgba()颜色。我写了一个消毒功能,可以完美地适用于任何添加到定制程序的新控件,但是如果我替换现有的控件并将相应设置的sanitize_callback参数更改为我自己的功能($wp_customize->get_setting("background_color")->sanitize_callback = "slug_sanitize_color";),Wordpress仍然使用其标准sanitize_hex_color。 var_dump($wp_customize->get_setting("background_color")->sanitize_callback);的输出是string(19) "slug_sanitize_color"所以我想它应该工作。如果需要更多代码,我可以提供。
我的问题:
为了让Wordpress使用我的消毒功能来控制预先存在的控件而不是使用一个Wordpress,我需要做些什么?
此外:这一切都发生在一个挂钩的功能内customize_registerWordpress定制器更改sanitize_callback设置没有任何影响

回答

0

我自己找到了解决方案。 如果要更改sanitize_callback,sanitize_js_callback或validate_callback,您必须手动取消注册旧的回调函数(remove_filter("customize_sanitize_{$settingid}",$wp_customize->get_setting($settingid)->sanitize_callback);),然后更改对象的值($wp_customize->get_setting($settingid)->sanitize_callback = "my_custom_filter_function";),最后注册新的过滤器函数(add_filter("customize_sanitize_{$settingid}",my_custom_filter_function,10,2);)。

相关问题