付费文章在站内只能看开头,读者用阅读器订阅,里面却是完整正文,付费墙等于没有,还找不到入口。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,订阅源走的是另一套模板,内容过滤器上的裁剪逻辑在这个上下文里没有生效,直接输出的是原始全文,读者也不会提醒你。
碰到「WordPress RSS 全文泄露」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
add_filter('the_content_feed', function ($c) {
if (current_user_can('read_paid')) return $c;
return wp_trim_words(wp_strip_all_tags($c), 80);
}, 9);
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,在订阅源模板里单独做一次正文裁剪之后再输出;只输出摘要内容,同时保留一条指回原文的链接;用真实的阅读器完整拉取一次订阅源来核对结果。
最后用这个标准收尾,订阅器里只看到摘要和原文链接,付费用户拉取仍是全文,账号仍安全。
