De wptexturize-filter van WordPress vervormt stilletjes inline JavaScript, waarbij de logische &&-operator wordt omgezet in de HTML-entiteit &&, wat scripts die binnen shortcodes draaien breekt.

Het probleem kwam aan het licht bij een ontwikkelaar die een reeks calculator-shortcodes onderhoudt. Na weken van vlekkeloze werking reageerden de verzendknoppen niet meer. Geen PHP-waarschuwingen, geen consolefouten, en de geïnspecteerde HTML zag er schoon uit — totdat de gerenderde broncode if (!isNaN(bf) && bf > 0) onthulde. Deze enkele syntaxfout voorkwam dat het volledige scriptblok werd uitgevoerd.

Waarom de filter belangrijk is

WordPress verwerkt de inhoud van berichten via een reeks filters voordat deze de browser bereikt. wptexturize is de

De tussenoplossing is selectief uitschakelen: schakel de filter alleen uit op plekken waar code staat, of gebruik een aangepaste shortcode die de output expliciet als veilig voor texturiseren markeert. WordPress biedt al wp_kses_post en andere sanitisation-hulpmiddelen; ontwikkelaars kunnen deze combineren met remove_filter-aanroepen om het beste van twee werelden te behouden.

Waar je op moet letten

WordPress core heeft nog geen wijziging aangekondigd voor wptexturize die <script>-tags automatisch zou vrijstellen. Totdat een dergelijke wijziging is doorgevoerd, moeten ontwikkelaars hun inline code handmatig beschermen. Houd de core development tracker in de gaten voor eventuele voorstellen om de filter context-bewust te maken. Controleer in de tussentijd elke shortcode of page builder-element die JavaScript injecteert en pas een van de drie bovenstaande oplossingen toe.

De kern: als je WordPress-site inline JavaScript uitvoert, controleer dan of wptexturize dit niet stilletjes herschrijft. Een enkele geëscapte ampersand kan een volledige functie onbruikbaar maken, en de oplossing is meestal een paar regels PHP of een overstap naar externe scripts.