停止条带快捷代码()剥离快捷代码中的内容

时间:2016-06-05 作者:dan9vu

我有一个短代码:

add_shortcode(\'refer\', function($atts, $text)
{
    $defaults = [\'link\' => \'\', \'nofollow\' => true];
    $atts     = shortcode_atts($defaults, $atts, \'refer\' );
    $nofollow = $atts[\'nofollow\'] ? \'rel="nofollow"\' : \'external\';

    return sprintf(\'<a href="%s" %s>%s</a>\', esc_url($atts[\'link\']), $nofollow, $text);
});
带演示帖子内容:

[参考链接=”http://www.lipsum.com“]Lorem Ipsum[/refer]只是印刷排版行业的虚拟文本。[参考链接=”http://www.lipsum.com“]自16世纪以来,Lorem Ipsum[/refer]就一直是标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本活字样本书。它不仅存活了五个世纪,而且还跨越到了电子排版,基本上保持不变。20世纪60年代,随着包含[refer link=]的Letraset表单的发布,它开始流行。”http://www.lipsum.com“]Lorem Ipsum[/refer]段落,以及最近使用的桌面发布软件,如Aldus PageMaker,包括Lorem Ipsum版本。

回传摘录的循环:

while ( have_posts() ) : the_post();
    the_excerpt();
endwhile;
结果:

只是印刷排版行业的虚拟文本。自16世纪以来,一直是标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本样本书。它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。[…]

请注意,所有Lorem Ipsum 摘录中的文字被删去了。

查看后the_excerpt() 和其他相关功能,我发现问题是由strip_shortcodes() 在…内wp_trim_excerpt 作用

但是因为strip_shortcodes() 没有筛选器,如何更改其行为?

1 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

在您的functions.php:

add_filter( \'the_excerpt\', \'shortcode_unautop\');
add_filter( \'the_excerpt\', \'do_shortcode\');
道具:@bainternet(Source)

或者,在上使用您自己的过滤器get_the_excerpt. 把这个放在你的主题中functions.php:

function custom_excerpt($text = \'\') {
    $raw_excerpt = $text;
    if ( \'\' == $text ) {
        $text = get_the_content(\'\');
                // $text = strip_shortcodes( $text );
        $text = do_shortcode( $text );
        $text = apply_filters(\'the_content\', $text);
        $text = str_replace(\']]>\', \']]>\', $text);
        $excerpt_length = apply_filters(\'excerpt_length\', 55);
        $excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
        $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return apply_filters(\'wp_trim_excerpt\', $text, $raw_excerpt);
}
remove_filter( \'get_the_excerpt\', \'wp_trim_excerpt\'  );
add_filter( \'get_the_excerpt\', \'custom_excerpt\'  );
这将允许在the_excerpt().

keesiemeijer的道具(source)

相关推荐

Custom post type shortcode

我创建了一个自定义的帖子类型快捷码作为滑块。我的滑块图像在背景图像中显示为特色图像。但我的幻灯片中没有显示特色图像。这是我的代码:<?php add_shortcode( \'slickslider\', \'slider_shortcodes_post_type\' ); function slider_shortcodes_post_type(){ $args = array( \'post_type\' => \'slid