从Get_the_Content()中删除特定的快捷代码

时间:2014-01-25 作者:Faisal Khurshid

我有一个这样的变量:

$post_content = get_the_content();
在这里,我想从$post\\U内容变量中删除一些特定的短代码,例如,我只想删除这个[video height="300" width="300" mp4="localhost.com/video.mp4"] 所有其他短代码和内容格式应保持不变。

如何做到这一点?

UPDATE:

我可以通过使用类似这样的代码来删除一些特定的短代码。。。

<?php 
    echo do_shortcode( 
        str_replace(
            \'[video height="300" width="300" mp4="localhost.com/video.mp4"]\', 
            \'\', 
            get_the_content()
        ) 
    ); 
?>
但它也删除了的所有html标记/格式get_the_content(). 如何避免?

3 个回复
SO网友:birgire

如果您确实需要此短代码:

[video height="300" width="300" mp4="localhost.com/video.mp4"]
要不输出任何内容,则可以使用wp_video_shortcode_override 过滤器或wp_video_shortcode 过滤以实现这一点。

这里有两个这样的例子:

示例#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 );
示例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 );
注意,我推荐第一个示例,因为我们很早就截取了它,不需要在短代码回调中运行所有代码。

SO网友:Softmixt

您可以使用phppreg_replace 核心功能,用于搜索内容中的短代码并将其删除,以便代码可以:

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

SO网友:RCNeil

不是吗

$post_content_without_shortcodes = strip_shortcodes(get_the_content());
或者还有

$post_content_without_shortcodes = remove_all_shortcodes(get_the_content());

结束

相关推荐

get data with shortcode

我有一个wp db。我添加了一个表“wp\\u mapmus”现在我想在贴子页面上用短代码显示这些数据。但有一个错误。我对php不太了解。我只使用相同的插件。正确的代码是什么?我的代码:function veri_cek($atts, $content = null) { extract( shortcode_atts( array( \'id\' => \'0\', ), $atts ) ); global $wpdb; $table = $wpdb-&g