[WordPress] Faire fonctionner les plugins WP-Comments-Remix et MCEComments ensemble


Lorsque l’on commence un blog, la reconnaissance ultime (pour moi en tout cas) est de recevoir des commentaires de ses lecteurs.

Il s’agit de l’étape ultime, du point à partir duquel vous pouvez échanger avec eux et de ce fait tisser des liens.

Or le système de commentaire de WordPress n’est pas très efficace, car trop simpliste.
J’ai donc décidé d’y ajouter quelques plugins parmi lesquels:

  • MCEComments v0.4.5 par Thomas Au(MK): Il ajoute un éditeur WYSIWYG, en l’occurrence TinyMCE à la zone de saisie des commentaires.
  • Subscribe To Comments v2.1.2 par Mark Jaquith: Il permet de souscrire au système de notification par email lorsque de nouveaux commentaires sont postés sur le billet.
  • WP Comment Remix v1.4.3 par Jason DeVelvis: Il ajoute énormément de fonctionnalités coté interface d’administration et la possibilité de citer ou répondre à un commentaire dans les billets, d’ajouter des tags aux commentaires, …

Problème, l’installation de TinyMCE change profondément le système de commentaires, cassant de ce fait la compatibilité des autres plugins et notamment avec WP-Comments-Remix

Je me suis donc lancé dans la résolution du problème.

En fait la solution est assez simple. WP-Comments-Remix utilise un script JS pour citer ou répondre. Mais celui-ci se base sur JQuery et les noms « standard » des zones pour récupérer leurs contenus. C’est là que le bas blesse.

En effet, TinyMCE ajoute un DOM nommé « tinyMCE » et c’est là qu’il faut aller chercher les informations.

function replyto(id, to) {
jQuery("textarea[name='comment']").val("<a>@" + to + "</a> - " + jQuery("textarea[name='comment']").val()).focus();
}

function quote(id, by, text) {
jQuery("textarea[name='comment']").val("<blockquote><a>" + originallypostedby + by + "</a><br />" + text + "</blockquote>\r\n" + jQuery("textarea[name='comment']").val()).focus();
}

Il suffit alors d’utiliser la variable « tinyMCE » en lieu et place de l’instance « comment » du DOM standard.

]
function replyto(id, to) {
var com = tinyMCE.getInstanceById("comment");
var inst = "<a>@" + to + "</a> > " + com.getContent()+ "\r";
com.setContent(inst);
com.focus();
}

function quote(id, by, text) {
var com = tinyMCE.getInstanceById("comment");
var inst = "<blockquote><a>" + originallypostedby + by + "</a><br />" + text + "</blockquote><br />\r\n" + com.getContent()+ "\r";
com.setContent(inst);
com.focus();
}

Tout ceci se trouve dans le fichier replyquote.js du plugin WP-Comments-Remix.

Voila, j’espère que ca servira à certains.

PS: j’ai encore un problème avec les accents, donc si un ponte du JS veut bien m’aider, je suis ouvert ;)

PS2: N’hésitez pas à laisser des commentaires ;)