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

如何在Employees自定义文章类型查询中排除当前文章缩略图?

解决自定义文章类型单页排除当前帖子缩略图的问题

我来帮你搞定这个问题!你遇到的exclude参数不生效的情况,主要是现有代码里的两个关键问题导致的:

  1. include参数使用错误:你用了include => get_post_thumbnail_id(),但get_post_thumbnail_id()返回的是当前帖子的特色图附件ID,而不是帖子ID。WP_Query的include参数是用来指定要加载的帖子ID列表,这个参数会直接覆盖exclude的作用,所以你的排除逻辑根本没机会生效。
  2. 错误的排除参数:WP_Query里用来排除帖子的正确参数是post__not_in(接受数组格式),而不是exclude(这个参数已经被弃用了)。

修正后的完整代码

<?php
// 仅在Employees单篇文章页面才添加排除当前帖子的条件
$exclude_current = is_singular('employees') ? array(get_the_ID()) : array();

$args = array(
    'post_type'      => 'employees',
    'post_status'    => 'publish',
    'order'          => 'ASC',
    'posts_per_page' => -1,
    'post__not_in'   => $exclude_current,
    // 筛选出有特色图的帖子,确保只加载带缩略图的内容
    'meta_query'     => array(
        array(
            'key'     => '_thumbnail_id',
            'compare' => 'EXISTS'
        )
    )
);

$my_query = new WP_Query($args);

if ($my_query->have_posts()) :
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <div class="col-md-2">
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(); ?>
            </a>
        </div>
    <?php endwhile;
endif;
wp_reset_postdata(); // 推荐用wp_reset_postdata()代替wp_reset_query(),更准确
?>

关键修改说明

  • 替换排除参数:用post__not_in替代无效的exclude,并传入当前帖子ID的数组(仅在单篇文章页面生效,避免归档页面也排除内容)
  • 移除错误的include参数:改用meta_query筛选存在_thumbnail_id元数据的帖子,这才是正确筛选有特色图帖子的方式
  • 优化重置查询:用wp_reset_postdata()代替wp_reset_query(),因为我们用的是自定义WP_Query,前者更适合恢复原始的$post对象

这样修改后,当你在Max的文章页面时,查询就会自动排除Max的帖子,只加载Phil、Denise等其他Employees的缩略图啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:16:18