Je débogue un problème avec un script tiers que les utilisateurs de wordpress utilisent en copiant / collant un extrait de script et html dans le corps de leur message, comme (exemple non réel bien sûr):
<script>
window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } };
window.foobar.hello();
</script>
J'ai remarqué que certaines installations de wordpress envelopperont cela dans CDATA, d'autres non (probablement en faisant une sorte de vérification DOCTYPE - bien que tous les thèmes sur lesquels j'ai testé utilisent un doctype HTML5).
Pourtant, lors de l'encapsulation du script dans CDATA, les utilisateurs seront mordus par le bogue suivant: https://core.trac.wordpress.org/ticket/3670 (la fermeture >
est incorrectement remplacée par >
), ce qui conduit le navigateur à ignorer le contenu du script :
<script>// <![CDATA[ window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } }; window.foobar.hello(); // ]]></script>
Je ne possède pas trop de WP-Fu moi-même et la recherche sur Google m'a seulement conduit à identifier le problème tel quel, alors ma question serait: quand WordPress encapsule-t-il exactement les scripts en ligne dans les sections CDATA? L'utilisateur peut-il en quelque sorte empêcher ce comportement? L'utilisateur peut-il contourner le bogue ci-dessus sans modifier le noyau WP?