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
    Apr 18 '11 at 11:27
  • its registered using add_shortcode()
    – JM at Work
    Apr 19 '11 at 1:33

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.


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);

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

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

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.