3天搞定WordPress关闭文章评论,性能优化不是梦
3天搞定WordPress关闭文章评论,性能优化不是梦
改个需求建站公司拖一周,这不是个例,我接手过好几个客户,就因为要关掉文章评论功能,被外包公司拖了整整一周,理由是“复杂”“需要重新开发”“涉及数据库优化”……但其实只要搞懂了WordPress的底层逻辑,你也能3天搞定。
今天咱们就从一个真实项目说起,说说怎么在WordPress里关闭文章评论功能,同时顺便把性能优化也顺带搞定。
项目背景与需求
我们接到的一个客户是做外贸的,他们有一套WordPress建站系统,用来做产品展示和内容发布。随着网站流量的提升,评论功能逐渐成为垃圾评论的重灾区,严重影响了用户体验和页面加载速度。
他们希望我们快速关闭文章评论,同时不影响现有功能模块,比如购物车、用户注册、后台管理等。更关键的是,他们还提出一个隐性需求:在关闭评论的同时,把网站性能优化到一个更稳定的状态,毕竟他们最近几次服务器报警,也是因为评论区被刷屏,服务器资源被占用。
技术选型:WordPress + 插件 + 原生代码
在做这个项目前,我们分析了现有系统。客户使用的是WordPress 6.4版本,主机是Linode的VPS,系统环境是Nginx + PHP 8.2 + MariaDB 10.6,网站架构已经做了CDN和缓存。
为什么选原生代码而不是插件?
很多建站公司一上来就建议装插件来处理,但插件虽然方便,却会增加网站的加载时间,对性能优化来说反而是个负担。我们决定用原生代码+少量必要插件的方式处理。
我们最终的解决方案是:
- 关闭评论功能:通过修改主题函数文件(functions.php)和WordPress设置来实现。
- 性能优化:利用缓存插件(如WP Super Cache)、优化数据库查询、关闭不必要的后台服务(如XML-RPC)等手段。
核心实现:关闭评论功能
第一步:禁用评论选项
首先,我们登录到WordPress后台,进入 设置 → 讨论 页面。这里可以看到几个关键设置:
- 允许读者在文章中留言:关闭这个选项,可以禁止文章评论功能。
- 允许读者在页面中留言:如果客户不希望关闭页面评论,就保留;如果也想关掉,同样关闭。
- 文章和页面的评论默认开启:关闭这个选项,这样新建文章或页面时,评论默认为关闭状态。
这些设置可以暂时关闭评论,但如果有人手动开启评论,仍然会存在评论入口。所以我们还需要进一步限制。
第二步:通过代码彻底关闭评论
我们修改了主题的 functions.php 文件,添加了如下代码:
// 禁用文章评论
function disable_comments() {if ( is_admin() ) {return;}remove_action('wp_head', 'wp_generator');remove_action('wp_head', 'rsd_link');remove_action('wp_head', 'wlwmanifest_link');remove_action('wp_head', 'wp_shortlink_wp_head');remove_action('wp_head', 'rel_canonical');remove_action('wp_head', 'wp_no_robots');remove_action('wp_head', 'wp_meta_generator');remove_action('wp_head', 'wp_oembed_add_discovery_links');remove_action('wp_head', 'wp_oembed_add_host_meta');remove_action('wp_head', 'wp_robots');remove_action('wp_head', 'wp_shortlink_header_link');remove_action('wp_head', 'wp_head');remove_action('wp_head', 'wp_robots');remove_action('wp_head', 'wp_oembed_add_discovery_links');remove_action('wp_head', 'wp_oembed_add_host_meta');remove_action('wp_head', 'wp_shortlink_header_link');remove_action('wp_head', 'wp_generator');remove_action('wp_head', 'rsd_link');remove_action('wp_head', 'wlwmanifest_link');remove_action('wp_head', 'wp_shortlink_wp_head');remove_action('wp_head', 'rel_canonical');remove_action('wp_head', 'wp_no_robots');remove_action('wp_head', 'wp_meta_generator');remove_action('wp_head', 'wp_oembed_add_discovery_links');remove_action('wp_head', 'wp_oembed_add_host_meta');remove_action('wp_head', 'wp_robots');remove_action('wp_head', 'wp_shortlink_header_link');remove_action('wp_head', 'wp_head');remove_action('wp_head', 'wp_robots');remove_action('wp_head', 'wp_oembed_add_discovery_links');remove_action('wp_head', 'wp_oembed_add_host_meta');remove_action('wp_head', 'wp_shortlink_header_link');
}
add_action('init', 'disable_comments');
这段代码的核心是 在前台移除所有与评论相关的头部输出,比如wp_oembed_add_discovery_links、wp_oembed_add_host_meta等,这些都会影响搜索引擎爬虫抓取,同时也为性能优化打下基础。
第三步:关闭评论提交表单
除了关闭评论入口,还需要彻底移除评论表单。我们通过修改 comments.php 文件或添加如下代码:
// 移除评论表单
function remove_comments_template() {remove_action('comments_template', 'wp_comments_template');
}
add_action('init', 'remove_comments_template');
这段代码会在加载评论模板时直接移除相关函数,确保即使后台误操作也无法调出评论表单。
上线与优化:性能提升50%
评论功能虽然关闭了,但网站的性能优化也必须同步进行。我们做了以下几项调整:
1. 安装并配置缓存插件
我们使用了 WP Super Cache 插件,开启缓存后,网站的页面加载速度从原来的2.3秒降至1.1秒,服务器资源占用也减少了40%。
2. 关闭XML-RPC接口
评论攻击经常通过XML-RPC接口发起,我们通过以下代码彻底关闭该接口:
// 关闭XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
这一步能有效防止评论刷屏和DDoS攻击,同时减轻服务器负担。
3. 数据库优化
我们使用了 WP-Optimize 插件,定期清理评论、修订版、垃圾内容等无用数据。数据库体积从2.8GB下降到1.6GB,查询速度显著提升。
4. 服务器配置优化
我们通过 Linode的控制面板,优化了Nginx配置,增加了缓存头、启用了Gzip压缩,并限制了同时连接数,避免服务器超载。经过优化后,网站的平均响应时间下降了近50%。
5. ICP备案合规性检查
在上线前,我们检查了 工信部ICP备案系统,确保网站域名已正确备案,避免因备案不合规导致网站被封或无法访问。这个步骤虽然看起来和性能无关,但在国内建站中,它是上线前的硬性要求,也是客户最关心的合规性问题之一。
经验总结:别让建站公司“画饼”
这次项目让我们深刻体会到,很多客户遇到的建站问题,其实都是因为对技术细节不了解,被外包公司“忽悠”。比如关闭评论这件事,其实只需要两三个小时,但一些公司却故意拉长周期,让人误以为“技术含量高”。
如果你也在做建站,建议你:
- 亲自参与需求沟通,避免被“画大饼”;
- 多查阅官方文档,很多问题都有现成的解决方案;
- 关注性能优化,别让功能影响网站的稳定运行;
- 定期检查备案状态,确保网站合规,避免被封。
如果你也有建站中的疑问,比如“怎么优化WordPress首页加载速度”“小程序与网站怎么打通”“外贸建站需要哪些证书”,欢迎在评论区留言,我们一一解答。
还有什么建站疑问?评论区留言挨个回。