安装过滤插件后WordPress自定义循环失效,卸载后仍无法运行求修复方案
问题修复排查步骤
- 优先排查残留的查询过滤钩子:很多过滤插件卸载后可能残留
pre_get_posts钩子代码在主题functions.php、子主题配置或者wp-content目录下的mu-plugins(必须使用插件)文件夹里,搜索所有代码中是否有针对post_type = namskeid的全局查询过滤逻辑,若有直接删除即可。 - 修正当前代码中的错误点:
get_the_ID( 180 )写法错误,get_the_ID()本身没有传参的用法,如果你需要获取ID为180的页面的关联值,直接写180即可,或者确认这里的业务逻辑是否为匹配当前页面ID,如果是当前页面直接用get_the_ID()不加参数。- 自定义查询后重置数据应该用
wp_reset_postdata()而不是wp_reset_query(),后者是给主查询用的,自定义WP_Query用前者避免全局$post对象污染。 - 统计查询结果数量不能直接
count($namskeid),应该用$namskeid->found_posts或者$namskeid->post_count,$namskeid是查询对象不是结果数组,count永远返回1导致后面的按钮逻辑永远错误。 meta_type指定DATE的情况下,orderby建议用meta_value_date而不是meta_value_num,避免日期排序异常。
- 临时开启查询调试:在
$namskeid = new WP_Query($args);后面加一行var_dump($namskeid->request);打印出生成的SQL语句,直接放到数据库执行就能看出是查询条件错误还是确实没有符合条件的内容,排查完删除调试代码即可。 - 检查自定义字段数据是否正常:确认
course_date、course_type_display这两个自定义字段的存储格式没有被之前的过滤插件修改,用后台自定义字段编辑工具查看对应文章的字段值是否符合查询要求。
修正后的完整代码参考
$args = array( 'posts_per_page' => '6', 'post_type' => 'namskeid', 'meta_type' => 'DATE', 'orderby' => 'meta_value_date', 'order' => 'ASC', 'meta_key' => 'course_date', 'meta_query' => array( array ( 'key' => 'course_type_display', 'compare' => 'LIKE', // 此处根据业务需求调整,如果是匹配ID为180的内容直接填180即可 'value' => 180 ) ) ); $namskeid = new WP_Query($args); if($namskeid->have_posts()) : while($namskeid->have_posts()) : $namskeid->the_post(); ?> <a href="<?php the_permalink(); ?>"><h5><?php the_title();?></h5></a> <?php $courseDate = new DateTime(get_field('course_date')); ?> <p><strong>Dagsetning: </strong> <?php echo $courseDate->format('d. m. Y'); ?><br> <?php the_field('course_excerpt');?></p> <a href="<?php the_permalink();?>" class="btn btn-sm btn-outline-dark">Meira</a> <a href="<?php the_field('course_registration');?>" class="btn btn-sm btn-outline-success">Skráning</a> <hr> <?php endwhile; else : echo "Engin námskeið skráð í " . get_the_title() . " á næstunni. Hafið samband við Ökuland fyrir frekari upplýsingar."; endif; // 修正结果统计逻辑,post_count获取当前页返回的文章数量 if($namskeid->post_count >= 2) { } else { echo "<a href='". home_url('namskeid') . "'class='btn btn-sm btn-secondary'>Fleiri námskeið</a>"; } // 自定义查询用wp_reset_postdata重置全局$post wp_reset_postdata(); ?>
内容的提问来源于stack exchange,提问作者Elin Halldorsdottir
相关产品推荐
相关产品推荐

