之前大叔介绍过 wordpress相关文章实现的方法,例:《代码实现WordPress相关文章》,那么今天说的这个教程,是从优化角度来更合理的实现wordpress相关文章的,至于客观喜欢哪个,自己决定吧!
策略:文章内容相关程度: 手动指定 > 标签 >分类 > 随机
实现方式:下面代码直接加到functions.php中即可
-
function add_related_posts($content){
-
return $content . wp_related_posts();
-
}
-
add_filter (‘the_content’, ‘add_related_posts’); //hook
-
function wp_related_posts(){
-
global $post;
-
$num = 5;//文章数量
-
$counter = 1;
-
$exclude_id = get_post_meta($post->ID,’related’,true);//获取手动置顶的相关文章
-
if ($exclude_id){
-
$args = array(
-
‘post_status’ => ‘publish’,
-
‘post_type’ => array(‘post’),
-
‘post__in’ => explode(‘,’, $exclude_id),
-
‘posts_per_page’ => $num
-
);
-
$posts = get_posts($args);
-
foreach($posts as $sb){
-
$output .= ‘<li><a href=”‘ . get_permalink($sb->ID) . ‘”>’ . $sb->post_title . ‘</a></li>’;//可自定义样式
-
$i++;
-
}
-
}
-
if( $i < $num){//自定义文章数不足后通过分类和标签处理
-
$tagsid = array();
-
$catid = array();
-
$thisid[] = $post->ID;
-
$posttags = get_the_tags();
-
$catids = get_the_category();
-
if(!emptyempty($posttags)) {
-
foreach($posttags as $tag) {
-
$tagsid[] = $tag->term_id;
-
}
-
}
-
if(!emptyempty($catids)) {
-
foreach($catids as $cat) {
-
$catid[] = $cat->term_id;
-
}
-
}
-
$args = array(
-
‘post_type’ => ‘post’,
-
‘post__not_in’ => $thisid,
-
‘ignore_sticky_posts’ => 1,
-
‘posts_per_page’ => ($num – $i),
-
‘tax_query’ => array(
-
‘relation’ => ‘OR’,//改成AND则必须是同标签同分类下
-
array(
-
‘taxonomy’ => ‘post_tag’,
-
‘field’ => ‘term_id’,
-
‘terms’ => $tagsid,
-
),
-
array(
-
‘taxonomy’ => ‘category’,
-
‘field’ => ‘term_id’,
-
‘terms’ => $catid,
-
),
-
),
-
);
-
$rsp = get_posts($args );
-
foreach($rsp as $sb){
-
$output .= ‘<li><a href=”‘ . get_permalink($sb->ID) . ‘”>’ . $sb->post_title . ‘</a></li>’;//可自定义样式
-
$i++;
-
}
-
}
-
$final = ‘<h3>相关文章</h3><ul>’ . $output . ‘</ul>’;
-
return $final;
-
}
调用方法
如需加入自定义相关文章,只需新建自定义栏目,加入文章id即可,多篇文章用,隔开
如想自定位置,并调整样式,则去掉the_content
的钩子,然后手动调用wp_related_posts
函数
骚年,创作吧。。。。
觉得文章有用就打赏一下文章作者
微信扫一扫打赏