web-dev-qa-db-fra.com

Pourquoi plusieurs sauts de ligne ont-ils cessé de fonctionner dans l'éditeur de texte?

# Adds ability to add break tags on posts
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

add_filter( 'the_content', 'nl2br' );
add_filter( 'the_excerpt', 'nl2br' );

Nous avons eu le code ci-dessus dans notre plug-in personnalisé pendant des années et cela a permis à la balise break de fonctionner.

Eh bien cela fonctionne toujours. Sauf que plusieurs sauts de ligne ne fonctionnent pas. Nous pouvons placer 50 balises break à la suite et le texte ira simplement à la ligne suivante. Le problème est que nous devons copier/coller un grand nombre de HTML droits et que l’espacement est effectué à l’aide de balises break.

Alors, pourquoi cela a-t-il cessé de fonctionner en passant de 4.4.atern à 4.5.latest? Et, plus important encore, que puis-je faire pour obtenir du temps pour lire ce qui est là !! ?? Aussi, j'ai essayé d'utiliser le widget Advanced TinyMCE et d'afficher des paragraphes/sauts ... Cela fonctionne à nouveau, mais pas pour plusieurs. (oui je comprends les gens peuvent avoir un espace insécable entre les deux pour montrer la ligne - cela va demander beaucoup de travail de notre part et c'est vraiment du ghetto)

6
STing

D'après les commentaires, les problèmes semblent être liés au comportement incorrect de certains plugins.

1
Mark Kaplun

Quand appelez-vous le code pour supprimer et ajouter les nouveaux filtres? Vous pouvez essayer de les appeler avec une priorité plus élevée (si vous les appelez d'un autre point d'ancrage).

Il est fort probable que cela soit dû au fait qu'un autre plugin ou thème effectue son propre remplacement sur the_content ... qu'il s'agisse d'appeler wpautop lui-même ou de supprimer le filtre nl2br.

S'il supprime le filtre pour nl2br, vous pouvez simplement appeler votre propre fonction:

add_filter( 'the_content', 'myown_nl2br' );
add_filter( 'the_excerpt', 'myown_nl2br' );

function myown_nl2br($string) { 
    $string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 
    return $string; 
} 

Référence Linebreak:

  • windows =\r\n
  • unix =\n
  • osx/mac =\r

Vous pouvez également simplement appeler nl2br() dans la fonction ci-dessus, mais avec str_replace vous permet de comprendre comment cela fonctionne et techniquement, nl2br() insère uniquement un <br/> devant le saut de ligne, mais ne supprime pas le saut de ligne proprement dit.


Sur la piste du coupable:

Effectuez une recherche complète de wp-content dans tout votre répertoire the_content et recherchez les correspondances dans lesquelles le filtre est supprimé, ajouté, etc. Recherchez également nl2br et wpautop, qui devraient vous aider à localiser le coupable.

Si pour une raison quelconque le plugin ou le thème trouvé a un rappel sur la méthode d'un objet de classe, le remove_filter standard ne fonctionnera pas, voici une réponse à une autre question où j'ai posté du code pour supprimer un filtre lorsque vous n'avez pas accès à la classe objet:

https://wordpress.stackexchange.com/a/239431/51201

0
sMyles