Wordpress定制器更改sanitize_callback以进行设置不会产生任何影响

时间:2017-05-09 14:02:09

标签: php wordpress

我的问题:
我已使用支持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_register

的函数中

1 个答案:

答案 0 :(得分: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);)。