欢迎您光临自学哈网,只为分享网络知识教程,供大家学习参考!

「自学哈网」WordPress代码实现完善的文章相关推荐功能

作者 : 自学哈 本文共2447个字,预计阅读时间需要7分钟 2022-11-26 共142人阅读
也想出现在这里? 联系我们

这两天子凡把泪雪网的相关推荐功能进行了重写,将原来的文章相关推荐功能做了自我感觉非常优秀的改进,相比用其它 WordPress 相关文章推荐的插件来说,我更喜欢自己来折腾,经过这一番的重写 WordPress 相关推荐,泪雪网的相关文章推荐已经得到了更加完善的推荐适配。

首先 WordPress 本身并没有相关文章的推荐功能,网站之所以需要这样的功能出于两个原因,一方面是推荐相关的内容越优质,访客的留存和继续阅读将会增强,同样从优化角度来说会更加有利于搜索引擎抓取时对页面质量的提升,毕竟一个页面的内容,推荐内容越相关,说明这个页面的质量就越高。

所有废话不多说,下面子凡就把相关的 WordPress 实现相关文章推荐的代码分享出来,供 WordPress 开发者或者喜欢折腾的朋友借鉴参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
global $post;
$pid = $post->ID;//当前文章的 ID
$tags = [];
$limit = 6;//自定义数量
$post_tags = get_the_terms($pid,\'post_tag\');
if ( !empty($post_tags) && !is_wp_error($post_tags) ) {
	$tags = wp_list_pluck($post_tags, \'term_id\');
}
$related_args = [
	\'ignore_sticky_posts\' => 1,
	\'post_type\' => \'post\',
	\'posts_per_page\' => $limit,
	\'post_status\' => \'publish\',
	\'post__not_in\' => [$pid],
	\'tag__in\' => $tags,
];
$relateds = new WP_Query($related_args);
$post_count = $relateds->post_count;
$output = \'<ul>\';
if($relateds->have_posts()){
	while($relateds->have_posts()){
		$relateds->the_post();
		$output .= \'<li><a href="\'.get_permalink().\'">\'.get_the_title().\'</a></li>\';
	}
	if($post_count<$limit){//数量还不够
		wp_reset_postdata();
		$limit = $limit - $post_count;//还差几条数据
		$pids = wp_list_pluck($relateds->posts,\'ID\');//获取已有文章 ID
		$pids = array_merge([$pid],$pids);//合并文章 ID
		$catids = wp_list_pluck(get_the_category($pid),\'term_id\');//分类 ID
		$related_args = [
			\'ignore_sticky_posts\' => 1,
			\'post_type\' => \'post\',
			\'posts_per_page\' => $limit,
			\'post_status\' => \'publish\',
			\'post__not_in\' => $pids,
			\'category__in\' => $catids,
		];
		$relateds = new WP_Query($related_args);
		$post_count = $relateds->post_count;
		if($relateds->have_posts()){
			while($relateds->have_posts()){
				$relateds->the_post();
				$output .= \'<li><a href="\'.get_permalink().\'">\'.get_the_title().\'</a></li>\';
			}
		}
	}//数量还不够
	if($post_count<$limit){//还不够
		wp_reset_postdata();
		$limit = $limit - $post_count;//还差数据
		$pids = array_merge($pids,wp_list_pluck($relateds->posts,\'ID\'));//合并文章 ID
		$related_args = [
			\'ignore_sticky_posts\' => 1,
			\'post_type\' => \'post\',
			\'posts_per_page\' => $limit,
			\'post_status\' => \'publish\',
			\'post__not_in\' => $pids,
		];
		$relateds = new WP_Query($related_args);
		if($relateds->have_posts()){
			while($relateds->have_posts()){
				$relateds->the_post();
				$output .= \'<li><a href="\'.get_permalink().\'">\'.get_the_title().\'</a></li>\';
			}
		}
	}//还不够
}
wp_reset_postdata();
$output .= \'</ul>\';
echo $output;

代码看上去很长,但是大家可以简单的看看其实还是很简单的,首先是根据当前文章 ID 获取当前文章设置的标签,根据标签来获取相同标签的文章,并且排除当前文章,如果文章数量不够,就继续或许当前文章分类下面的文章,并且排除当前文章和前面已经获取到的文章,如果还不够我们需要的数量,就整站获取其他文章补够数量。

本站声明:
本站所有资源来源于网络,分享目的仅供大家学习和交流!如若本站内容侵犯了原著者的合法权益,可联系邮箱976157886@qq.com进行删除。
自学哈专注于免费提供最新的分享知识、网络教程、网络技术的资源分享平台,好资源不私藏,大家一起分享!

自学哈网 » 「自学哈网」WordPress代码实现完善的文章相关推荐功能
也想出现在这里? 联系我们
© 2022 Theme by - 自学哈网 & WordPress Theme. All rights reserved 浙ICP备2022016594号