WP根据文章标签,获取相关文章,有个问题,
根据当前文章 ID获取设置的标签,
1:根据标签来获取相同标签的文章,并且排除当前文章,
2:如果文章数量不够,就继续获取当前文章分类下面的文章,并且排除当前文章和前面已经获取到的文章,
3:如果还不够我们需要的数量,就整站获取其他文章补够数量。:
如果文章没有标签、或者当前分类的文章数量不够时,都是可以继续或许其他文章来填充到需要的数量。
现在遇到的问题:
当文章标签,只有这一篇文章时,就获取不到内容了,输出为空。
正常情况应该是继续获取当前文章分类下面的其他文章,,,
当文章标签有两篇以上文章时,就正常,能继续获取分类下的文章来填充数量。
仅在只有一篇文章时出现问题,,,
代码来自泪雪博客,我发现了这个bug,请教哥哥们该怎么解决
1:根据标签来获取相同标签的文章,并且排除当前文章,
2:如果文章数量不够,就继续获取当前文章分类下面的文章,并且排除当前文章和前面已经获取到的文章,
3:如果还不够我们需要的数量,就整站获取其他文章补够数量。:
如果文章没有标签、或者当前分类的文章数量不够时,都是可以继续或许其他文章来填充到需要的数量。
现在遇到的问题:
当文章标签,只有这一篇文章时,就获取不到内容了,输出为空。
正常情况应该是继续获取当前文章分类下面的其他文章,,,
当文章标签有两篇以上文章时,就正常,能继续获取分类下的文章来填充数量。
仅在只有一篇文章时出现问题,,,
- 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;