Выполнить закрытие короткого кода после the_content

Мне нужно выполнить короткий код на тысячах сообщений, которые еще не содержат короткий код, поскольку я добавил некоторые из них вручную.

Я использую другую функцию для добавления открытого короткого кода после второго абзаца, который работает.

Я написал этот код, который выводит замыкающий короткий код после содержимого, но он не выполняется.

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

Возможно, мне нужно использовать echo do_shortcode.

Solutions Collecting From Web of "Выполнить закрытие короткого кода после the_content"

Возможно, я неправильно понимаю, что вы делаете, и я извиняюсь, если это так, но …

  1. Похоже, что вы возвращаете контент, если у должности НЕ У него уже есть один, который смотрит мне в сторону, основываясь на моем понимании вашей проблемы.
  2. Похоже, вы пытаетесь выполнить сломанный (неполный) короткий код.

Я неправильно понял исходный вопрос, но, основываясь на комментариях ниже, вам нужно запустить do_shortcode() во всем блоке контента, а не только в заключительном разделе.

Я думаю, что ваш код должен выглядеть так:

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

Если это не сработает, потребуются некоторые манипуляции с основными системами исполнения контента и короткого кода, и мне придется заняться позже, когда у меня будет больше времени.