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.
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.
Maybe I misunderstand what you are doing, and I apologize if that is the case, but...
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.
do_shortcode()
on only half the sortcode, the ending half which won't translate well. What happens whenever you removedo_shortcode()
and just append the closing shortcode string? – Howdy_McGee ♦ Commented Apr 16, 2015 at 15:48<div>
and was able to use the above successfully ( both withdo_shortcode()
and with just appending the ending shortcode tag ). It could be that there's a bunch of junk content between your opening shortcode and ending shortcode ( maybe empty paragraph tags ) that's keeping it from operating properly. View Source / Dev Tools to see if this is the case. If your shortcode relies on JS check for console errors. – Howdy_McGee ♦ Commented Apr 16, 2015 at 16:19