如何在返回当前文章的WP_Query中添加facetwp参数?
解决方案
问题定位
你之前尝试的代码存在两个关键错误:
- WP_Query的正确参数名是
post__in(双下划线),而非post_in post__in要求传入数组类型的文章ID,不能直接传单个数值
修正后的代码
方法1:新建WP_Query查询当前文章并添加facetwp参数
<?php // 获取当前文章ID $current_post_id = get_the_ID(); // 构造查询参数,注意post__in需传入数组,facetwp设为布尔值true即可 $args = array( 'post_type' => 'court', // 你的自定义文章类型 'posts_per_page' => 1, 'post__in' => array( $current_post_id ), 'facetwp' => true ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // 在这里添加你的ACF经纬度字段调用逻辑 // 示例:$latitude = get_field('your_latitude_field'); // $longitude = get_field('your_longitude_field'); } } wp_reset_postdata(); ?>
方法2:复用全局查询并注入facetwp参数
如果不想新建查询,可直接修改全局$wp_query的参数,让FacetWP识别当前查询:
<?php global $wp_query; // 给全局查询添加facetwp标记 $wp_query->set( 'facetwp', true ); // 若需要重新执行循环,可保留以下代码 if ( $wp_query->have_posts() ) { while ( $wp_query->have_posts() ) { $wp_query->the_post(); // 你的地图相关逻辑 } rewind_posts(); // 重置循环指针,不影响页面后续内容输出 } ?>
额外说明
- FacetWP的
facetwp参数接受布尔值true即可,无需传字符串'true' - 确保ACF经纬度字段已正确配置,且在循环内调用
get_field()时能正常获取字段值 - 若使用Oxygen Builder,建议将代码块放在单页模板的地图Facet加载前的位置执行
内容的提问来源于stack exchange,提问作者ifcstudios
相关产品推荐
相关产品推荐

