事情本身不复杂,线索都在日志里。主题自带的相关文章模块按 tag 随机取 6 篇,技术文下面经常出现活动通知和招聘信息,这些链接占正文链接数的四成。
第一反应是「6 条链接的锚文本全是文章标题,没有主题相关性」,验证下来不成立。
这类报错背后常见的原因有几处,逐个排除就行。随机取数不看语义,标签重叠一两个就命中。还有一种是模块在正文下方,视觉上像正文内容,被算作正文链接。
另外,缓存了旧的推荐结果,文章改了分类也不刷新。
采样看推荐结果是否相关
curl -s https://www.example.com/nginx-502/ | grep -o 'rel="bookmark"[^>]*>[^<]*</a>' | head -6
随后按同分类加关键词重新取数
SELECT ID,post_title FROM wp_posts WHERE post_status='publish' AND ID<>1234 AND post_title LIKE '%Nginx%' LIMIT 6;
给模块加分类过滤
add_filter('related_posts', function($p){ return array_filter($p, function($id){ $c=get_the_category($id); return $c && $c[0]->term_id===4; }); });
末了清掉模块缓存
wp cache flush --path=/var/www/html
怎么算真的好了,看的是同一批现象。抽查 20 篇文章,推荐位里同主题的比例超过八成,正文链接数不再被无关页面占满。
相关推荐是内链里最容易失控的一块,条数多不等于权重传得好,错配反而稀释主题。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
