在循环中显示_excerpt()时如何过滤掉短码?

时间:2016-05-05 作者:KDX

我正在使用the_excerpt() 在我的模板循环中,在首页显示帖子摘录。

它目前直接在头版上显示不需要的短代码

例如:。

[box]post content[/box]

[alert]post content[/alert]

如何在保留实际内容的同时过滤掉这些短代码?

4 个回复
最合适的回答,由SO网友:user5200704 整理而成

试试这个

add_filter( \'get_the_excerpt\', \'strip_shortcodes\', 20 );
或尝试此编辑

echo strip_shortcodes( get_the_excerpt() );
如果短码未注册到wordpress函数add\\u shortcode

add_filter( \'the_excerpt\', \'remove_shortcodes_in_excerpt\', 20 );

function remove_shortcodes_in_excerpt( $content){
    $content = strip_shortcodes($content);
    $tagnames = array(\'box\', \'alert\');  // add shortcode tag name [box]content[/box] tagname = box
    $content = do_shortcodes_in_html_tags( $content, true, $tagnames );

    $pattern = get_shortcode_regex( $tagnames );
    $content = preg_replace_callback( "/$pattern/", \'strip_shortcode_tag\', $content );
    return $content;
}

SO网友:Shoeb Mirza

function wpsesess_ddecode_excerpt( $excerpt )
{
    return strip_shortcodes( $excerpt );
}
add_filter( \'the_excerpt\', \'wpsesess_ddecode_excerpt\' );
EDIT 你能把这个贴在函数里吗。php并让我知道?

SO网友:fsenna

尝试:

$excerpt = $post->post_excerpt;
$excerpt = apply_filters(\'the_content\', $excerpt);
echo $excerpt;
或:

$excerpt = $post->post_excerpt;
$excerpt = apply_filters(\'the_excerpt\', $excerpt);
echo $excerpt;

SO网友:cjbj

由于您的新主题没有注册短代码,因此它们被视为纯文本。任何过滤的尝试都是无用的,因为就WordPress而言,它们不是短代码。

解决这个问题的最简单方法是在新主题中注册短代码,并将它们挂接到除了删除短代码之外什么都不做的操作。

相关推荐

How to apply these filters

我买了woocommerce比较插件。不幸的是,我不知道如何应用一些过滤器。例如,我想将比较限制增加到10。ı如何使用下方过滤器?apply\\u filters(\'woocommerce\\u products\\u compare\\u max\\u products\',int)–设置一次可以比较的产品数量。默认值为5。我试过但没用的东西; function comparelimit($location){ $location = 10; }