我有一个短代码:
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()
没有筛选器,如何更改其行为?
最合适的回答,由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)