Remova o shortcode específico de get_the_content ()

Eu tenho uma variável como esta:

$post_content = get_the_content(); 

Aqui eu quero remover algum shortcode específico da variável $ post_content, por exemplo, eu quero remover apenas este

todos os outros códigos curtos e formatação de conteúdo deve ser deixado intacto.

Como isso poderia ser feito?

ATUALIZAR:

Posso remover algum código-alvo específico ao usar o código de algo assim …

  

Mas também está removendo todas as tags html / formatação de get_the_content() . Como evitá-lo?

Solutions Collecting From Web of "Remova o shortcode específico de get_the_content ()"

Se você quiser exatamente esse shortcode:

 [video height="300" width="300" mp4="localhost.com/video.mp4"] 

para não produzir nada, você pode usar o filtro wp_video_shortcode_override ou o filtro wp_video_shortcode para conseguir isso.

Aqui estão dois desses exemplos:

Exemplo 1

 /** * Let the [video] shortcode output "almost" nothing (just a single space) for specific attributes */ add_filter( 'wp_video_shortcode_override', function ( $output, $attr, $content, $instance ) { // Match specific attributes and values if( isset( $atts['height'] ) && 300 == $atts['height'] && isset( $atts['width'] ) && 400 == $atts['width'] && isset( $atts['mp4'] ) && 'localhost.com/video.mp4' == $atts['mp4'] ) $output = ' '; // Must not be empty to override the output return $output; }, 10, 4 ); 

Exemplo # 2

 /** * Let the [video] shortcode output nothing for specific attributes */ add_filter( 'wp_video_shortcode', function( $output, $atts, $video, $post_id, $library ) { // Match specific attributes and values if( isset( $atts['height'] ) && 300 == $atts['height'] && isset( $atts['width'] ) && 400 == $atts['width'] && isset( $atts['mp4'] ) && 'localhost.com/video.mp4' == $atts['mp4'] ) $output = ''; return $output; }, 10, 5 ); 

Nota

Eu recomendaria o primeiro exemplo, porque lá estamos interceptando-o no início e não precisamos executar todo o código dentro do shortback do callback.

Não seria

 $post_content_without_shortcodes = strip_shortcodes(get_the_content()); 

ou há também

 $post_content_without_shortcodes = remove_all_shortcodes(get_the_content()); 

Você pode usar a function principal php preg_replace para procurar seu shortcode no conteúdo e removê-lo para que seu código possa ser:

 $post_content_without_shortcodes = preg_replace ( '/\[video(.*?)\]/s' , '' , get_the_content() );