12

I'm not sure if is wordpress itself or Tiny MCE that's doing it. But when switching between HTML and Visual editor it's adding  , and adding an extra one each time I switch back and forth. I don't even have a line break in the code, it seems to somehow be deciding where it wants to place them based on the tags in my html code.

What's causing this and how do I fix it?

I've already tried this in the template functions file:

//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');
  • 2
    It's actually doing this automatically when you switch tabs, I noticed it too, and found it very annoying. No clue on how to fix it yet though... – Joost de Valk Sep 28 '11 at 15:17
  • 1
    I use the HTML editor almost exclusively, pasting code in there from BBEdit. It seems to do this to me when I save in WP. – Goodbye Stack Exchange Oct 25 '11 at 19:30
  • well I have this problem too. When I post manually and click enter button, it will add paragraph for me. This happens after i installed tiny mce. What do you mean by this anyway: Filter tiny_mce_init, to override the default content-filtering rules – user15672 Apr 30 '12 at 10:19
  • 1
    This is happening to me on post titles in the loop. Seems indiscriminate (happens on only some space characters of some posts). – Drewdavid Nov 23 '16 at 5:26
  • I managed to find an easy workaround for this issue: wordpress.stackexchange.com/a/291746/135285 – AturSams Jan 21 '18 at 19:38
2

All I use is remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); and that stops Wordpress from creating any extra markup. Are you copying and pasting your code from an external editor?

| improve this answer | |
  • 4
    didn't work for me. Without using Tiny MCE, just in HTML each "update" still adds new  s – Christian Jun 17 '12 at 14:34
  • 3
    Also doesn't work for me – sidonaldson Oct 27 '15 at 10:44
4

I found that non-breaking spaces are being inserted when I use two spaces after a period. The editor seems to interpret the extra space as an attempt on my part to use spaces for text formatting.

If I copy-and-paste my article from the Wordpress editor into a text editor that supports hex display (I use EditPad Pro), I see that text that I thought is a period followed by two spaces is in reality text followed by a single space, followed by the unicode character with the hex code A0, which is the Unicode NO-BREAK SPACE character.

I was able to remove the non-breaking space in existing articles by replacing space followed by the NO_BREAK SPACE character by just a space. In most text editors, you should be able to do that with search & replace by copying the "two spaces" into the Find text box and writing a single space into the Replace text box.

I was able to avoid the issue going forward by only typing a single space after a period.

| improve this answer | |
3

What's causing this and how do I fix it?

Any content added to or removed from your Post Content is caused by tiny_mce_init, which is applying is's content-filtering rules.

The ways to prevent it are:

  1. Filter tiny_mce_init, to override the default content-filtering rules
  2. Stop switching between Visual and HTML editors. Really; unless you want to use option #1 above, don't switch between editors. WordPress is intended to be used such that content is entered using the Visual or the HTML editor, but not both simultaneously.

Example use for the tiny_mce_before_init filter in Codex. Another example of TinyMCE configuration/customization in Codex here.

| improve this answer | |
  • 11
    I'm pretty sure that your #2 answer is wrong. That or someone "screwed the pooch" on the UI. If the editor was intended to only be used as Visual or HTML, why have the Tabs there at all? Why not just have it as an option under settings to use it one way or the other? Further more, the tabs are there by default... it's not some developer advanced feature or option you have to setup. I'm pretty sure they where intended for users to be able to click back and forth between and that the real problem is that sometimes they don't work well together. (especially in the case of space formatting) – luckykind Nov 18 '11 at 3:43
  • 1
    @luckykind No, they weren't intended to switch forth and back between them. That's just a TinyMCE architectural problem. And it's not the only one. – kaiser Oct 2 '13 at 12:38
  • 3
    You can't tell me that a UI that offers tabs to switch back and forth between HTML and Visual editing isn't intended to be used that way. It's almost 2016 and the issue is still there. – Eric J. Nov 24 '15 at 4:13
  • 1
    I think my computer wasn't intended to be turned on but since it has a power button we turned it on thus all the problems are the user's fault. The design and the code are flawless obviously. – AturSams Jan 21 '18 at 19:29
1

I'm using Wordpress for a Hebrew Blog.

Workaround: Copy the text into an editor like sublime or notepad++ and search and replace the with normal spaces. You can copy one of them from the text.

Disclaimer: this is not much of an answer and more of a workaround so feel free to downvote. For me Wordpress is happily adding nbsp everywhere and without rhyme or reason. Not sure what is causing it. It is happening with Hebrew text a lot, much more than with any English text.

| improve this answer | |
0

In case there is somebody still stuck with this in 2020. We had this issue after migrating a bunch of content to Wordpress. Guess what, everybody did the copy and paste thing and we end up with way too much content to be able to fix manually. I implemented the php function bellow and added it to functions.php and it solved the issue for us.

    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)

The 999999 is just to make sure this filter will run last, in case these   are being added somewhere in the middle.

| improve this answer | |
-1

In css file. Put display: inline-flex to the p inside the excerpt. The additional white spaces don’t bother anymore. works for me

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.