2017-05-09 4 views
0

Mein Problem:
Ich habe die Farbeingabe im Customizer mit einem Eingang, der den Alpha-Kanal unterstützt ersetzt. Die Desinfektionsfunktion von Wordpress ist nur für Hex-Farben, aber ich bekomme rgba() Farben. Ich habe eine Hygienisierungsfunktion geschrieben, die perfekt für jedes neue Steuerelement funktioniert, das ich dem Customizer hinzufüge, aber wenn ich ein bestehendes ersetze und den Parameter sanitize_callback der entsprechenden Einstellung zu meiner eigenen Funktion ($wp_customize->get_setting("background_color")->sanitize_callback = "slug_sanitize_color";) ändere, verwendet Wordpress immer noch seinen Standard sanitize_hex_color. Die Ausgabe von var_dump($wp_customize->get_setting("background_color")->sanitize_callback); ist string(19) "slug_sanitize_color", also ich denke, es sollte funktionieren. Wenn mehr Code benötigt wird, kann ich es bereitstellen.
Meine Frage:
Was muss ich tun, damit Wordpress meine Bereinigungsfunktion für eine bereits existierende Kontrolle verwendet, anstatt die, mit der Wordpress ausgeliefert wird?
Ergänzung: Es geschieht alles in einer Funktion verhakt customize_registerWordpress Customizer Änderung sanitize_callback für die Einstellung hat keinen Effekt

Antwort

0

ich die Lösung selbst gefunden. Wenn Sie die Einstellungen für sanitize_callback, sanitize_js_callback oder validate_callback ändern möchten, müssen Sie die alte Callback-Funktion manuell aufheben (remove_filter("customize_sanitize_{$settingid}",$wp_customize->get_setting($settingid)->sanitize_callback);), dann den Wert für das Objekt ändern ($wp_customize->get_setting($settingid)->sanitize_callback = "my_custom_filter_function";) und schließlich die neue Filterfunktion registrieren (add_filter("customize_sanitize_{$settingid}",my_custom_filter_function,10,2);).

Verwandte Themen