在应用过滤器之前,将从摘录中删除短代码。请尝试以下操作:
function tsc_execute_shortcodes_in_excerpts( $text, $raw_text ){
if(empty($raw_text)){
$text = get_the_content(\'\');
$text = apply_filters(\'the_content\', $text);
$text = str_replace(\']]>\', \']]>\', $text);
$text = strip_tags($text);
$excerpt_length = apply_filters(\'excerpt_length\', 55);
$excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
$words = preg_split("/[\\n\\r\\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $excerpt_length ) {
array_pop($words);
$text = implode(\' \', $words);
$text = $text . $excerpt_more;
} else {
$text = implode(\' \', $words);
}
}
return $text;
}
add_filter( \'wp_trim_excerpt\', \'tsc_execute_shortcodes_in_excerpts\', 10, 2 );
基本上是重新运行
wp_trim_excerpt()
如果从一开始就对内容进行了修剪(减去短代码剥离)。如果您只想针对您的短代码,您可以在之后执行类似的操作
get_the_content(\'\')
:
$text = str_replace( \'[tsc\', \'{tsc\', $text );
$text = strip_shortcodes( $text );
$text = str_replace( \'{tsc\', \'[tsc\', $text );
希望这有帮助。