Execute Closing Shortcode After the_content

I need to execute a short code on thousands of posts which don't already contain the short code as i've added some manually.

I'm using another function to add the opening short code after the 2nd paragraph which works.

I've written this code which outputs the closing short code after the content but it does't execute.

add_filter( 'the_content', 'closing_shortcode' );
function closing_shortcode( $content ) {

        if( !has_shortcode( $content, 'members') )
        return $content;

        $close_shortcode = do_shortcode('[/member]');

        return $content . $close_shortcode;
}       

Maybe i need to use echo do_shortcode.

Topic the-content shortcode Wordpress

Category Web


Maybe I misunderstand what you are doing, and I apologize if that is the case, but...

  1. It looks like you are returning content if the post DOES NOT already have one, which looks backward to me based on my understanding of your problem.
  2. It looks like you are trying to execute a broken (incomplete) shortcode.

I misunderstood the original question but based on comments below, you need to run do_shortcode() on the whole content block, not just on the closing section.

I think your code should look like:

add_filter( 'the_content', 'closing_shortcode' );
function closing_shortcode( $content ) {

        // return if the shortcode has already been added
        // Note the ! was removed
        if( has_shortcode( $content, 'members') )
        return $content;

        // Add the closing sortcode tag
        $close_shortcode = '[/member]';

       // and run do_shortcode() on the whole content block
        return do_shortcode($content . $close_shortcode);
}      

If that doesn't work, it will take some manipulation of the core content and shortcode execution systems and I will have to tackle later, when I have more time.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.