如何按相似标签(类别)的数量来排列相关文章?

如何在Wordpress网站的单页post或是custom post type(CPT) 中显示相关推荐?网上有很多教程教你怎么做。大体都是先得到当前post的类别或标签,然后到数据库里抓有相同标签的post出来。

对于一个小的、文章类型单一的博客,这种方法足够了,但对于结构复杂,同一篇post有多个标签时,我们要在有限的空间(一般不会超过10条)为用户提供最有价值的内容,就涉及优先级和排序的问题。如何判断一篇post和当前post的相关程度呢?

我能想到的最好办法就是按他们相同标签的数量来排序了。下面是我在名为商户(”business”)的CPT中显示相关商户推荐的例子。

首先,用wp_get_object_terms 得到当前商户的所有类别和标签数组,将其implode为string,然后运行query语句得出相关商户,按相同类别和标签数量多少来排序。

SELECT ID, COUNT(*) AS total_count, post_title  FROM `wp_posts` 
LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id
LEFT JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id
WHERE wp_posts.ID!=343131 AND wp_posts.post_type='business' AND wp_posts.post_status='publish' AND wp_terms.name IN ('中餐','粤港菜','茶餐厅简餐','奶茶甜点','果汁饮品','咖啡烘焙','早茶点心')
GROUP BY wp_posts.ID
ORDER BY total_count DESC

发表评论

电子邮件地址不会被公开。 必填项已用*标注