Cela concerne un problème sur mon blog .
Mon fournisseur m'a récemment demandé de passer de PHP 5.2 à PHP 5.4. Cela m’a obligé à mettre à jour WordPress.
Depuis la mise à jour double, tous les sauts de ligne dans les commentaires sont rendus en "rn", donc si vous tapez ceci:
Hi
<br><br>
Hello
ce qui est rendu est
HirnHello
Si je modifie des commentaires pour les réparer, tous les sauts de ligne que je saisis sont reconvertis en "rn" dès que je clique sur "enregistrer".
Une restauration temporaire vers PHP 5.2 n'a eu aucun effet sur ce problème.
J'ai brièvement pensé pouvoir résoudre le problème en mettant à jour mon thème (K2). Cela n'a pas résolu le problème et a créé toute une série de nouveaux problèmes (non liés). J'ai donc annulé cette mise à jour.
En parcourant ce site, je vois quelques références éparses à ce problème et à des problèmes similaires, mais rien n'indique qu'il ait jamais été courant et rien qui semble être une solution.
Quelqu'un peut-il deviner ce qui cause ceci, et même mieux, comment le réparer?
Mettre à jour: J'ai trouvé un fichier appelé wp-comments-post.php
, qui contient la ligne suivante:
$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
J'ai enveloppé la trim($_POST['comment'])
dans une nl2br()
, et cela a aidé un peu. Au lieu de rendre comme
HirnHello
il rend maintenant comme
Hi<br>
rn<br>
rnHello
(ou quelque chose comme ça; j'aurais peut-être oublié combien de rn
name __ apparaissent).
C'est un progrès, mais j'aimerais quand même me débarrasser des rn
name __ 's. Je peux probablement utiliser str_replace
? Mais je suis un amateur et je ne suis pas sûr de la syntaxe. Mes premières suppositions n'ont pas fonctionné.
En attendant, je veux toujours savoir pourquoi ce problème est apparu en premier lieu.
Il s’avère donc que j’ai résolu le problème en modifiant le fichier wp-comments-post.php, où la ligne suivante apparaît:
$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
Dans cette ligne, j'ai changé
trim($_POST['comment'])
à
str_replace("\r\n",'<br \>',trim($_POST['comment']))
J'ai découvert cela grâce à de nombreux essais et erreurs. Je ne sais toujours pas ce qui a causé le problème (et bien sûr, le problème est en cours; il est simplement corrigé automatiquement à chaque fois qu'il se produit).
Cette expérience n'a fait que renforcer ma conviction qu'il est toujours mauvais de mettre à niveau un logiciel qui fonctionne parfaitement.
La réponse ci-dessus ("Donc, il s'avère") ne s'avère pas être la réponse après tout. Avec le correctif décrit ici, les commentaires queIont été correctement renvoyés, mais les commentaires que d'autres n'ont pas soumis ne l'ont pas été (même si je soumettais via la même interface de commentaire que tous les autres). Allez comprendre.
Quoi qu’il en soit, le vrai remède consiste à restaurer wp-comments-post.php dans sa forme originale (en éliminant le str_replace que j’avais ajouté avec la réponse précédente) et à utiliser un fichier appelé comments.php (qui fait partie de le thème K2), où le problème a été résolu en remplaçant la ligne
<?php comment_text(); ?>
avec
<?php nl2br(comment_text()); ?>
Cela fonctionne vraiment. Pourquoi c'était soudainement nécessaire reste un grand mystère.