You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:自定义WordPress+GEOmyWP搜索结果模板循环逻辑

GEOmyWP自定义搜索结果:优先展示Pro分类帖子解决方案

要实现先显示分类法paket下带pro标签的帖子,再显示其他内容,不能直接在原循环里做判断(会导致pro帖子穿插在结果中),正确做法是先把查询结果分成两组,再分别循环展示:

完整代码示例

<?php
// 初始化两个数组,分别存储Pro帖子和普通帖子
$pro_posts = [];
$regular_posts = [];

// 第一次遍历查询结果,完成分组
while ( $gmw_query->have_posts() ) :
    $gmw_query->the_post();
    
    // 检查当前帖子是否属于paket分类下的pro术语
    if ( has_term( 'pro', 'paket' ) ) {
        $pro_posts[] = $post;
    } else {
        $regular_posts[] = $post;
    }
endwhile;

// 重置查询状态,避免后续模板标签冲突
wp_reset_postdata();

// 优先循环展示Pro帖子
foreach ( $pro_posts as $post ) :
    setup_postdata( $post );
    ?>
    <!-- 这里替换成你的Pro帖子模板代码 -->
    <article class="search-result pro-result">
        <h2><?php the_title(); ?></h2>
        <div class="post-content"><?php the_excerpt(); ?></div>
        <!-- 显示GEOmyWP距离信息 -->
        <div class="distance"><?php gmw_distance_output( $gmw_query ); ?></div>
    </article>
    <?php
endforeach;

// 再循环展示普通帖子
foreach ( $regular_posts as $post ) :
    setup_postdata( $post );
    ?>
    <!-- 这里替换成你的普通帖子模板代码 -->
    <article class="search-result regular-result">
        <h2><?php the_title(); ?></h2>
        <div class="post-content"><?php the_excerpt(); ?></div>
        <!-- 显示GEOmyWP距离信息 -->
        <div class="distance"><?php gmw_distance_output( $gmw_query ); ?></div>
    </article>
    <?php
endforeach;

// 最终重置帖子数据
wp_reset_postdata();
?>

关键说明

  1. 分组逻辑:通过has_term('pro', 'paket')判断帖子是否属于目标分类术语,将结果拆分为两个数组,确保Pro帖子能集中展示在前面。
  2. 模板标签兼容:每次循环前调用setup_postdata($post),保证the_title()、the_excerpt()等WordPress原生模板标签正常工作。
  3. GEOmyWP功能保留:如果需要显示距离、地址等插件自带信息,直接使用gmw_distance_output()这类插件函数即可,不受分组影响。

内容的提问来源于stack exchange,提问作者Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:02:14