2017-05-09 147 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);)。

相關問題