标签相关文章
首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的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
|
<ul id= "tags_related" > <?php global $post ; $post_tags = wp_get_post_tags( $post ->ID); if ( $post_tags ) { foreach ( $post_tags as $tag ) { // 获取标签列表 $tag_list [] .= $tag ->term_id; } // 随机获取标签列表中的一个标签 $post_tag = $tag_list [ mt_rand(0, count ( $tag_list ) - 1) ]; // 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表 $args = array ( 'tag__in' => array ( $post_tag ), 'category__not_in' => array (NULL), // 不包括的分类ID 'post__not_in' => array ( $post ->ID), 'showposts' => 6, // 显示相关文章数量 'caller_get_posts' => 1 ); query_posts( $args ); if (have_posts()) { while (have_posts()) { the_post(); update_post_caches( $posts ); ?> <li>* <a href= "<?php the_permalink(); ?>" rel= "bookmark" title= "<?php the_title_attribute(); ?>" ><?php the_title(); ?></a></li> <?php } } else { echo '<li>* 暂无相关文章</li>' ; } wp_reset_query(); } else { echo '<li>* 暂无相关文章</li>' ; } ?> </ul> |
使用说明:”不包括的分类ID” 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id,赋值给 tag__in 这个参数,获取该标签下的6篇文章。
分类相关文章
本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。
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
|
<ul id= "cat_related" > <?php global $post ; $cats = wp_get_post_categories( $post ->ID); if ( $cats ) { $args = array ( 'category__in' => array ( $cats [0] ), 'post__not_in' => array ( $post ->ID ), 'showposts' => 6, 'caller_get_posts' => 1 ); query_posts( $args ); if (have_posts()) { while (have_posts()) { the_post(); update_post_caches( $posts ); ?> <li>* <a href= "<?php the_permalink(); ?>" rel= "bookmark" title= "<?php the_title_attribute(); ?>" ><?php the_title(); ?></a></li> <?php } } else { echo '<li>* 暂无相关文章</li>' ; } wp_reset_query(); } else { echo '<li>* 暂无相关文章</li>' ; } ?> </ul> |