Here's my very simple shortcode:
function box_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'width' => 'auto',
'height' => 'auto',
), $atts ) );
return '<div class="boxy-box" style="width:'. $width .'; height:'. $height .';" >'.do_shortcode($content).'</div>';
}
add_shortcode('box', 'box_shortcode');
[box]something[/box]
should give:
<div class="boxy-box" width:auto; height:auto;>something</div>
But, it doesn't. Even an empty shortcode (without a content, eg. [box][/box]) gives:
<div class="boxy-box" width:auto; height:auto;><br/></div>
(I don't care, but don't know where the br comes from)
The main problem is that, when I try [box]something[/box] I'm getting:
<div class="boxy-box" width:auto; height:auto;><br/>something<br/></div>
I know WP editor formats text automatically and there are "noP" plugins out there, but firstly - I'm using the HTML editor, secondly, why the heck WP is adding Brs (sometimes p's) to an inline code? :O
It wouldn't be a huge problem, but I HAVE to get PURE output, so:
[box]<h1>Header</h1><div>Content</div>[/box]
Will give a header and a div inside my box div, without any parapgrahs, brs, spans etc.
The funny thing is I have the same shortcode with h2 instead of div and it doesn't give any brs etc.
Sometimes I'm also getting a
<div class="boxy-box" width:auto; height:auto;></p>$content (...)
[edit]
I've found some comments on it:
This is driving me nuts as well. What the f**k is the point of having a html/code mode for posting if wordpress filters the god damn code and wraps around the tags anyways?
So I guess that's the problem. Is there a way of turning autop functionality at least for HTML editor? ;/
do_shortcode
inside the shortcode function, are you expecting other shortcodes inside your own? If not, i'd suggest testing minus the do_shortcode call.