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

造成这一情况的原因是之前的自定义摘要函数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