Lorsque la page de publication modifiée se charge dans l’administrateur de WordPress, je lance un processus js qui modifie le contenu de l’éditeur TinyMCE.
Récemment, je suis tombé sur WordPress des aperçus de shortcode en direct qui cassent mon code, car ils modifient également le contenu de l’éditeur TinyMCE. Ce shortcodes amélioré utilise la wp.mce.views api récemment introduite et refactorisée le WP 4.2. Ici plus détails sur les dernières modifications .
Existe-t-il un moyen d’accrocher mon processus before (ou after ) les aperçus des shortcode en direct WordPress?
Eh bien, oui, vous pouvez le faire:
//replace live edited content to display html
editor.on('BeforeSetcontent', function(event){
event.content = tinymce_to_html( event.content );
});
//Transform your html content to raw content
editor.on('GetContent', function(event){
event.content = html_to_tinymce( event.content );
});
Expliquons cela:
Sous le capot, tinymce utilise un éditeur de texte brut pour stocker du contenu, les utiliser dans des formulaires, etc. Mais ce que vous voyez, c’est un wrapper HTML qui lit le contenu de la zone de texte pour créer une vue HTML. Si vous insérez un contenu spécial (comme un shortcode), insérez le shortcode en texte brut et utilisez tinymce_to_html
pour en déduire le code HTML correspondant.
Je ne me souviens pas exactement pourquoi (j'ai écrit cette partie de code il y a longtemps), mais html_to_tinymce
doit faire exactement l'inverse de tinymce_to_html
et il est important de garder votre contenu propre lorsque vous passez à l'aide d'un éditeur de texte brut ou que vous enregistrez à votre base de données.
J'espère que ça aide, et à la vôtre