如果不想逐个修改模板,可以在主题的 functions.php 中添加一个输出过滤器,自动删除所有 HTML 注释(<!– … –>)。注意:这会删除所有注释,包括 IE 条件注释等可能有用的注释,需谨慎使用。

代码示例:
/**
* 过滤最终输出的 HTML,删除所有 <!-- 注释 -->
*/
function remove_html_comments_from_output( $buffer ) {
// 正则匹配所有 HTML 注释,但保留 IE 条件注释(可选)
$pattern = '/<!--(?!\s*(?:\[if[^\]]+\]|<!)\s*)(.*?)-->/s';
return preg_replace( $pattern, '', $buffer );
}
function start_output_buffer() {
ob_start( 'remove_html_comments_from_output' );
}
add_action( 'template_redirect', 'start_output_buffer' );
-
ob_start 会捕获即将发送到浏览器的整个 HTML 输出。
-
回调函数用正则删除所有非条件注释的 <!– … –>。
-
如果想保留所有注释,则不应使用此方法。
优点:
-
一次性生效,无需修改模板。
-
对任何主题都有效。
缺点:
-
增加了轻微的性能开销(输出缓冲+正则)。
-
可能会误删某些有用的注释(如调试信息、条件注释等)。