北极寒流 » 网络资源 » wordpress免插件实现相关文章代码 - 2012.03.25

wordpress免插件实现相关文章代码

给wordpress网站增加相关文章功能可以在一定程度上提高网站的pv,不过很多朋友可能出于懒得折腾的原因吧,都还是习惯采用wordpress相关文章插件,但是方便的同时也许牺牲了网站的速度,毕竟插件要考虑很多主题的兼容性,可能会增加很多对你网站无用的代码。所以个人的做法是能用代码达到效果就绝对不用插件,玩wordpress,玩的就是折腾嘛!再说在折腾的过程还可以学到点东西呢,何乐而不为?下面就给大家分享一下wordpress免插件实现相关文章代码。

<h3>Related Posts</h3>
<ul>
<?php
$post_num = 5; // 數量設定.
$exclude_id = $post->ID; // 單獨使用要開此行 //zww: edit
$posttags = get_the_tags(); $i = 0;
if ( $posttags ) {
$tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ','; //zww: edit
$args = array(
'post_status' => 'publish',
'tag__in' => explode(',', $tags), // 只選 tags 的文章. //zww: edit
'post__not_in' => explode(',', $exclude_id), // 排除已出現過的文章.
'caller_get_posts' => 1,
'orderby' => 'comment_date', // 依評論日期排序.
'posts_per_page' => $post_num
);
query_posts($args);
while( have_posts() ) { the_post(); ?>
<li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php
$exclude_id .= ',' . $post->ID; $i ++;
} wp_reset_query();
}
if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足.
$cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';
$args = array(
'category__in' => explode(',', $cats), // 只選 category 的文章.
'post__not_in' => explode(',', $exclude_id),
'caller_get_posts' => 1,
'orderby' => 'comment_date',
'posts_per_page' => $post_num - $i
);
query_posts($args);
while( have_posts() ) { the_post(); ?>
<li><a rel="bookmark" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php $i++;
} wp_reset_query();
}
if ( $i  == 0 )  echo '<li>没有相关文章!</li>';
?>
</ul>

把上述代码复制到你主题模板需要显示相关文章的位置即可(一般是插入在single.php文件中),该段代码可以通过调取tags来实现相关文章功能(所以我们有必要在发布文章的时候为文章增加tag),并且默认设置为5篇相关文章(可以修改代码中的文章数量显示),当相关文章数量不够时采用category补足。

上面的相关文章代码由于采用tag作为相关文章来源所以有时侯相关度就显得不是很高,如果喜欢用插件来实现相关日志的功能,那么推荐你使用yet-another-related-posts-plugin。相对来说yet-another-related-posts-plugin的相关文章无论从设置上面还是相关度都是相对不错的。

来源:http://zww.me/archives/25353

改进版,相关文章数量不够时再增加随机文章来补齐。

<h3>Related Posts</h3>
<ul>
<?php
$post_num = 5;
$exclude_id = $post->ID;
$posttags = get_the_tags(); $i = 0;
if ( $posttags ) {
$tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ',';
$args = array(
'post_status' => 'publish',
'tag__in' => explode(',', $tags),
'post__not_in' => explode(',', $exclude_id),
'caller_get_posts' => 1,
'orderby' => 'comment_date',
'posts_per_page' => $post_num
);
query_posts($args);
while( have_posts() ) { the_post(); ?>
<li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php
$exclude_id .= ',' . $post->ID; $i ++;
} wp_reset_query();
}
if ( $i < $post_num ) {
$cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';
$args = array(
'category__in' => explode(',', $cats),
'post__not_in' => explode(',', $exclude_id),
'caller_get_posts' => 1,
'orderby' => 'comment_date',
'posts_per_page' => $post_num - $i
);
query_posts($args);
while( have_posts() ) { the_post(); ?>
<li><a rel="bookmark" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
$exclude_id .= ',' . $post->ID; $i ++;
} wp_reset_query();
}
if ( $i < $post_num ) {
$args = array(
'post__not_in' => explode(',', $exclude_id),
'caller_get_posts' => 1,
'orderby' => 'rand',
'posts_per_page' => $post_num - $i
);
query_posts($args);
while( have_posts() ) { the_post(); ?>
<li><a rel="bookmark" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
$exclude_id .= ',' . $post->ID; $i ++;
} wp_reset_query();
}
if ( $i  == 0 )  echo '<li>No Related Articles!</li>';
?>
</ul>

发表评论 【登录·注册】

所有留言都会被审核,请勿发布垃圾评论!

(必填)*