获取custom post type的next permalink失效,多方案测试均无效果
代码问题诊断
你当前出现的问题和数据库损坏无关,是代码逻辑存在3处核心错误:
- 重复执行主查询循环:第一段
have_posts()循环执行完成后,全局主查询的文章指针已经指向末尾,第二段循环的have_posts()判断会直接返回false,永远不会执行 - 上下篇链接函数不需要嵌套到循环中重复执行:
previous_post_link()、next_post_link()本身是针对当前单篇文章对象生效的函数,仅需要调用一次即可,不需要遍历所有文章重复输出 previous_post_link()第四个参数配置错误:第四个参数为需要排除的分类ID列表,你填写的空格会导致分类匹配逻辑异常
修复后代码
如果是在单篇文章模板(single.php)中使用,正确写法如下:
if ( have_posts() ) { while ( have_posts() ) { the_post(); // 此处放置文章标题、内容等输出逻辑 the_title( '<h1>', '</h1>' ); the_content(); // 同分类上下篇链接仅需调用一次 previous_post_link( '%link', '同分类上一篇', true ); next_post_link( '%link', '同分类下一篇', true ); } wp_reset_postdata(); }
补充说明
- 如果不需要限制仅展示同分类的上下篇文章,将两个函数的第三个参数改为
false即可 - 若你是在自定义WP_Query查询中调用该功能,需要将自定义查询对象传入上下篇链接函数的对应参数中
内容的提问来源于stack exchange,提问作者NiklasWideC
相关产品推荐
相关产品推荐

