我知道有很多插件可以做到这一点。但我想知道为什么所有的插件只能通过标签而不是标题获得相关的帖子?
在single.php中仅通过标题检索所有类似帖子的有效方法是什么。例如,如果我有两个帖子的标题是“加速wordpress加载时间”和“加速wordpress后端”。然后在一个帖子中,另一个应该相关并显示。
我可以想办法做到这一点,即将所有帖子放在同一类别下,并使用similar_text()将每个标题与当前标题进行比较。然后订购结果并显示列表中的顶部结果。这是一种优秀而有效的方法吗?
有什么建议吗?如果您有解决方案,请附上一段代码。
答案 0 :(得分:1)
我建议您不要在页面加载时加载相关帖子,因为这会严重损害您网站的效果。
WordPress的免费WordPress插件相关帖子会自动查找相关帖子(以及其他基于标题的帖子)并为您缓存它们,为您提供真实的相关帖子,而不会损害您网站的性能。完成自动链接后,您可以根据需要手动添加,编辑或删除相关帖子。
您可以通过WordPress.org repo试试:http://wordpress.org/plugins/related-posts-for-wp/
答案 1 :(得分:0)
它涉及更多工作,但您可以在帖子表的标题列中添加fulltext index,然后在查询中使用MATCH AGAINST
来检索按相关性排序的类似帖子。
添加全文索引:
CREATE INDEX fulltext2 ON wp_posts(post_title(255));
使用MATCH AGAINST进行查询:
SELECT ID, post_title,
MATCH(post_title) AGAINST ('$post_title') AS Similarity
FROM wp_posts
WHERE MATCH(post_title) AGAINST('$post_title')
ORDER BY Similarity DESC;
注意:我不是特别流利的SQL,如果您决定使用此选项,也许有人可以改进上面的SQL。