去评论
dz插件网

WP根据文章标签,获取相关文章,有个问题,

逝水年华
2022/07/28 11:16:47
根据当前文章 ID获取设置的标签,
1:根据标签来获取相同标签的文章,并且排除当前文章,
2:如果文章数量不够,就继续获取当前文章分类下面的文章,并且排除当前文章和前面已经获取到的文章,
3:如果还不够我们需要的数量,就整站获取其他文章补够数量。:

如果文章没有标签、或者当前分类的文章数量不够时,都是可以继续或许其他文章来填充到需要的数量。

现在遇到的问题:
当文章标签,只有这一篇文章时,就获取不到内容了,输出为空。
正常情况应该是继续获取当前文章分类下面的其他文章,,,


当文章标签有两篇以上文章时,就正常,能继续获取分类下的文章来填充数量。
仅在只有一篇文章时出现问题,,,
  1. 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;
代码来自泪雪博客,我发现了这个bug,请教哥哥们该怎么解决