I am having a problem where my markup is rendered incorrectly (more space because of <br />) as WordPress adds <br /> everywhere theres a line break


  [y]Hello world[/y]
  [y]A test[/y]

In the handler for x the $content looks like

<br />
[y]Hello world[/y]
<br />
[y]A test[/y]
<br />

Am I suppose to strip out all the line breaks?


I notice that no line breaks


[y]Notepad++[/y] will not be rendered as a shortcode. I must have a space like

[x][y]Photoshop[/y] [y]Notepad++[/y][/x]


  • How are you shortcode codes handled? Via a filter on the_content or using an actual registered shortcode?
    – t31os
    Commented Apr 18, 2011 at 11:27
  • its registered using add_shortcode()
    – JM at Work
    Commented Apr 19, 2011 at 1:33

5 Answers 5


before you register your shortcode, add the filter to the content for unautop:

add_filter( 'the_content', 'shortcode_unautop' );

Do this also for the areas, maybe excerpt or widget, when your shortcode add to this areas.


When you are in the post editor, press CTRL + ENTER when you go to a new line. Doing that tells WordPress not to add a <br /> tag in your code.


I couldn't get the above solutions to work, so I did a CSS hack to hide the

.my-custom-shortcode br {
    display: none;

There shouldn't be any br tags by default ! but if you are getting any in your content without even using them try adding esc_attr or esc_html before returning the variables that holds the values of your shortcode


The solution is given by this post.

You have to change the priority of the filter which adds line breaks:

remove_filter('the_content', 'wpautop');
add_filter('the_content', 'wpautop', 100);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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