Javascript | WordPress | WP-Plugins

Nach Kirki-Update: Uncaught TypeError: data.value[choiceKey].replace is not a function

twine 957546 1920

In meiner letzten Theme-Version integrierte ich nach langer Suche und Vergleichen das Plugin kirki für Customizer Controls.

Nach dem Update auf Version 3.0.10 konnte ich im Customizer an manchen Positionen nicht mehr navigieren. In der Console zeigte sich nachfolgenden Fehler:

VM987:39 Uncaught TypeError: data.value[choiceKey].replace is not a function
at eval (eval at m.template (underscore.min.js?ver=1.8.3:5), :39:35)
at c (underscore.min.js?ver=1.8.3:5)
at wp-util.js?ver=4.8.2:34
at child.renderContent (customize-controls.js?ver=4.8.2:2255)
at child.actuallyEmbed (dynamic-control.js?ver=4.8.2:165)
at Function. (dynamic-control.js?ver=4.8.2:145)
at i (jquery.js?ver=1.12.4:2)
at Object.fireWith (jquery.js?ver=1.12.4:2)
at Function.set (customize-base.js?ver=4.8.2:221)
at Function.d [as set] (jquery.js?ver=1.12.4:2)

Ausgelöst wurde er durch eine Änderung im Control dimensions.

<input {{{ data.inputAttrs }}} type="text" value="{{ (data.value[ choiceKey ]).replace( '%%', '%' ) }}"/>

Die Änderung der Zeile in

<input {{{ data.inputAttrs }}} type="text" value="{{ (data.value[ choiceKey ]).toString().replace( '%%', '%' ) }}"/>

behob den Fehler.

Die nach dem zu ersetzenden Wert durchsuchte Zeichenkette darf keine Ziffer, sondern muss ein String sein (Syntax string.replace(searchvalue, newvalue). Bei mir war der Wert in manchen Einstellungen jedoch 0, was bisher keine Rolle gespielt hatte.

Der Fehler war seitens des Entwicklers nicht nachvollziehbar. Demnach musste er durch etwas verursacht werden, was ich selbst eingebracht hatte.

Ursache dafür war, dass ein paar meiner Controls optional sind und von einer Funktion generiert werden. Diese ersetzte leere Werte durch die Ziffer 0. Die Änderung der Werte zu '0' behob den Fehler.

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.