·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
返回列表 发布新帖

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

154 1
发表于 2022-7-28 11:16:47 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
根据当前文章 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,请教哥哥们该怎么解决
我要说一句 收起回复
创宇盾启航版免费网站防御网站加速服务

评论1

婷姐Lv.8 发表于 2022-7-28 11:16:52 | 查看全部
文章只有一篇就是当前文章当然不会显示其他的了,你加个判断如果返回为空输出某分类下的文章不就行了。代码这么长不懂
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.15.239.207,GMT+8, 2025-1-9 19:58 , Processed in 0.267473 second(s), 87 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表