前几天,老郭调整博客首页摘要格式,让博客的首页看起来美观了不少。但是,对于一些内容存在代码的文章,摘要并不会屏蔽这些代码,而是把代码的内容也显示出来。这样的话,对于整体的美观度和阅读的感受还是有一定的影响的。

造成这一情况的原因是之前的自定义摘要函数custom_excerpt_with_paragraphs_filter没有没有排除代码,那么就需要修改functions.php文件里的custom_excerpt_with_paragraphs_filter函数,添加代码块过滤逻辑。找到之前添加的custom_excerpt_with_paragraphs_filter函数,替换为以下内容:
function custom_excerpt_with_paragraphs_filter( $excerpt ) {
global $post;
$content = get_the_content();
$content = strip_shortcodes( $content );
$content = apply_filters( 'the_content', $content ); // 保留格式
$content = str_replace( ']]>', ']]>', $content );
// 移除代码块
$content = preg_replace( [
'/<pre.*?>.*?<\/pre>/is', // 移除 <pre> 块
'/<code.*?>.*?<\/code>/is', // 移除 <code> 块
'/<script.*?>.*?<\/script>/is', // 移除 <script> 块
'/<style.*?>.*?<\/style>/is', // 移除 <style> 块
'/<\?php.*?\?>/is', // 移除 PHP 代码
], '', $content );
// 处理段落分割(兼容单换行和双换行)
$paragraphs = preg_split( "/\n{1,}/", $content );
$excerpt = '';
$char_count = 0;
$max_chars = 260; // 你的长度限制
foreach ( $paragraphs as $paragraph ) {
if ( empty( trim( $paragraph ) ) ) continue;
$paragraph_clean = strip_tags( $paragraph, '<p>' ); // 保留 <p> 标签
$chars = mb_strlen( strip_tags( $paragraph_clean ), 'UTF-8' );
if ( $char_count + $chars <= $max_chars ) {
$excerpt .= '<p>' . trim( $paragraph_clean ) . '</p>';
$char_count += $chars;
} else {
$remaining_chars = $max_chars - $char_count;
if ( $remaining_chars > 0 ) {
$excerpt .= '<p>' . mb_substr( strip_tags( $paragraph ), 0, $remaining_chars, 'UTF-8' ) . '...</p>';
}
break;
}
}
return $excerpt;
}
add_filter( 'the_excerpt', 'custom_excerpt_with_paragraphs_filter', 1000 );
保存后刷新页面,首页摘要就不会再显示代码的内容了。
本文首发于:让首页摘要不显示代码-老郭博客
《让首页摘要不显示代码》留言数:0