WordPress.org

Forums

Shortcode inline with text always wrapped in P tags? (2 posts)

  1. RavanH
    Member
    Posted 2 years ago #

    Hi all,

    I've search the forums and internet for this issue but only found very old (2+ years) threads about this. And some 'solutions' or rather work-arounds that all have their own downside.

    In the codex on http://codex.wordpress.org/Shortcode_API under Output, I read:

    wpautop recognizes shortcode syntax and will attempt not to wrap p or br tags around shortcodes that stand alone on a line by themselves. Shortcodes intended for use in this manner should ensure that the output is wrapped in an appropriate block tag such as <p> or <div>.

    That part 'that stand alone on a line by themselves' is key. What if a user does not put that shortcode on a single line but places it at the beginning of a new paragraph line? In that case, the output, even when it is a DIV, gets wrapped inside the P tag together with the text that follows.

    Another example: The user put two shortcodes (can even be different kinds) with a space between them together on one single line ? Then again, there are P tags thrown around. But funnily NOT when there is no space between the shortcodes...

    The only reasonable solution I found is an old trick:

    //move wpautop filter to AFTER shortcode is processed
    remove_filter( 'the_content', 'wpautop' );
    add_filter( 'the_content', 'wpautop' , 99);
    add_filter( 'the_content', 'shortcode_unautop', 100);

    which does seem still effective but it will affect ALL other shortcodes, I suppose...

    Is there really no cleaner way?

  2. James Revillini
    Member
    Posted 1 year ago #

    Yeah, I still get <p> tags around my shortcodes that produce content within <div>s too, despite the shortcode being on a line by itself.

Topic Closed

This topic has been closed to new replies.

About this Topic