Wordpress ajoutant automatiquement «& nbsp;»?

12

Je ne sais pas si c'est wordpress lui-même ou Tiny MCE qui le fait. Mais lorsque vous basculez entre HTML et Visual Editor, cela en ajoute  et en ajoute un supplémentaire à chaque fois que je change d'avant en arrière. Je n'ai même pas de saut de ligne dans le code, il semble en quelque sorte décider où il veut les placer en fonction des balises de mon code html.

Qu'est-ce qui cause cela et comment puis-je le résoudre?

J'ai déjà essayé cela dans le fichier de fonctions du modèle:

//disable auto p
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Remove auto formatting
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');
Dave
la source
2
En fait, cela se fait automatiquement lorsque vous changez d'onglet, je l'ai également remarqué et je l'ai trouvé très ennuyeux. Cependant, nous ne savons pas encore comment y remédier ...
Joost de Valk
1
J'utilise l'éditeur HTML presque exclusivement, en y collant du code de BBEdit. Il me semble que cela se produit lorsque j'enregistre dans WP.
Goodbye Stack Exchange du
eh bien j'ai ce problème aussi. Lorsque je poste manuellement et clique sur le bouton Entrée, cela ajoutera un paragraphe pour moi. Cela se produit après avoir installé minuscule mce. Qu'entendez-vous par là de toute façon: filtre tiny_mce_init, pour remplacer les règles de filtrage de contenu par défaut
1
Cela m'arrive sur les titres des articles dans la boucle. Semble aveugle (se produit uniquement sur certains caractères d'espace de certains messages).
Drewdavid
J'ai réussi à trouver une solution de contournement simple pour ce problème: wordpress.stackexchange.com/a/291746/135285
AturSams

Réponses:

2

Tout ce que j'utilise est remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );et cela empêche Wordpress de créer un balisage supplémentaire. Copiez-vous et collez-vous votre code à partir d'un éditeur externe?

Matthew Xerri
la source
4
n'a pas fonctionné pour moi. Sans utiliser Tiny MCE, juste en HTML chaque "mise à jour" ajoute toujours de nouveaux  s
Christian
3
Ne fonctionne pas non plus pour moi
sidonaldson
4

J'ai constaté que des espaces insécables sont insérés lorsque j'utilise deux espaces après un point. L'éditeur semble interpréter l'espace supplémentaire comme une tentative de ma part d'utiliser des espaces pour la mise en forme du texte.

Si je copie et colle mon article de l'éditeur Wordpress dans un éditeur de texte qui prend en charge l'affichage hexadécimal (j'utilise EditPad Pro), je vois que le texte que je pensais être un point suivi de deux espaces est en réalité du texte suivi d'un seul espace, suivi du caractère unicode avec le code hexadécimal A0, qui est le caractère UNICODE NO-BREAK SPACE .

J'ai pu supprimer l'espace insécable dans les articles existants en remplaçant l'espace suivi du caractère NO_BREAK SPACE par juste un espace. Dans la plupart des éditeurs de texte, vous devriez pouvoir le faire avec la recherche et le remplacement en copiant les "deux espaces" dans la zone de texte Rechercher et en écrivant un seul espace dans la zone de texte Remplacer.

J'ai pu éviter le problème à l'avenir en ne tapant qu'un seul espace après une période.

Eric J.
la source
3

Qu'est-ce qui cause cela et comment puis-je le résoudre?

Tout contenu ajouté ou supprimé de votre contenu de publication est provoqué par tiny_mce_init, qui applique ses règles de filtrage de contenu.

Les moyens de l'empêcher sont:

  1. Filtre tiny_mce_init, pour remplacer les règles de filtrage de contenu par défaut
  2. Arrêtez de basculer entre les éditeurs Visual et HTML . Vraiment; sauf si vous souhaitez utiliser l'option n ° 1 ci-dessus, ne basculez pas entre les éditeurs . WordPress est destiné à être utilisé de telle sorte que le contenu soit saisi à l'aide de l' éditeur visuel ou HTML , mais pas les deux simultanément.

Exemple d'utilisation du tiny_mce_before_initfiltre dans le Codex. Un autre exemple de configuration / personnalisation de TinyMCE dans Codex ici .

Chip Bennett
la source
11
Je suis presque sûr que votre réponse n ° 2 est fausse. Cela ou quelqu'un "a foutu la merde" sur l'interface utilisateur. Si l'éditeur était destiné à être uniquement utilisé en tant que visuel ou HTML, pourquoi y a-t-il des onglets? Pourquoi ne pas simplement l'avoir comme option dans les paramètres pour l'utiliser d'une manière ou d'une autre? De plus, les onglets sont là par défaut ... ce n'est pas une fonctionnalité ou une option avancée du développeur que vous devez configurer. Je suis quasiment sûr qu'ils étaient destinés aux utilisateurs à pouvoir cliquer entre eux et que le vrai problème est que parfois ils ne fonctionnent pas bien ensemble. (en particulier dans le cas de la mise en forme de l'espace)
luckykind
1
@luckykind Non, ils n'étaient pas destinés à basculer entre eux. Ce n'est qu'un problème d'architecture TinyMCE . Et ce n'est pas le seul .
kaiser
3
Vous ne pouvez pas me dire qu'une interface utilisateur qui propose des onglets pour basculer entre HTML et l'édition visuelle n'est pas destinée à être utilisée de cette façon. C'est presque 2016 et le problème est toujours là.
Eric
1
Je pense que mon ordinateur n'était pas destiné à être allumé mais comme il a un bouton d'alimentation, nous l'avons allumé donc tous les problèmes sont de la faute de l'utilisateur. Le design et le code sont évidemment impeccables.
AturSams
1

J'utilise Wordpress pour un blog hébreu.

Solution: copiez le texte dans un éditeur tel que sublime ou notepad ++ et recherchez et remplacez le par des espaces normaux. Vous pouvez copier l'un d'eux à partir du texte.

Avis de non-responsabilité: ce n'est pas vraiment une réponse et plus une solution de contournement, alors n'hésitez pas à voter contre. Pour moi, Wordpress ajoute volontiers nbsp partout et sans rime ni raison. Je ne sais pas ce qui en est la cause. Cela se produit beaucoup avec le texte hébreu, beaucoup plus qu'avec n'importe quel texte anglais.

AturSams
la source
0

Dans le cas où quelqu'un serait toujours coincé avec cela en 2020. Nous avons eu ce problème après la migration d'un tas de contenu vers Wordpress. Devinez quoi, tout le monde a fait le copier-coller et nous nous retrouvons avec beaucoup trop de contenu pour pouvoir le corriger manuellement. J'ai implémenté la fonction php ci-dessous et l'ai ajoutée à functions.php et cela a résolu le problème pour nous.

    function replace_content($content) {
        $content = htmlentities($content, null, 'utf-8');
        $content = str_replace(" ", " ", $content);
        $content = html_entity_decode($content);
    return $content;
    }
    add_filter('the_content','replace_content', 999999999)

Le 999999 est juste pour s'assurer que ce filtre fonctionnera en dernier, au cas où ils  seraient ajoutés quelque part au milieu.

Bruno
la source
-1

Dans le fichier css. Mettez display: inline-flexau p à l'intérieur the excerpt. Les espaces blancs supplémentaires ne dérangent plus. travaille pour moi

Victor Montes de Oca
la source