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

如何在WordPress文章自动打标签函数中排除指定分类

问题根因

  • category__not_in、category_in都是WordPress中WP_Query查询类的专用参数,不属于WP_Post对象的原生属性,直接通过$post->调用不存在的属性,永远无法得到有效值,所以判断条件不触发,代码不生效。
  • 你尝试的几种分类判断写法都用错了语法,WordPress有原生函数可以直接判断文章所属分类,不需要自己写属性判断。

正确实现代码

/* Auto-tag all posts w/Newsbreak tag (except Obits [ID=148]) to include in Newsbreak RSS feed */
function set_nbrk_tag_on_publish ($post_id, $post) {
    // 仅对已发布的文章类型生效,且排除ID为148的分类
    if ($post->post_type == 'post' && $post->post_status == 'publish' && !has_category( 148, $post_id ) ) {
        wp_set_post_tags( $post_id, 'newsbreak', true );
    }
}
add_action('save_post','set_nbrk_tag_on_publish',10, 2);

代码说明

  • 这里用了WordPress原生函数has_category(),第一个参数填要排除的分类ID/别名/名称,第二个参数填文章ID,就可以直接判断当前文章是否属于指定分类。
  • 前面加!就是取反,也就是不属于148分类的时候才执行加标签的逻辑。
  • 如果你后续要排除多个分类,把第一个参数换成数组即可,比如!has_category( [148, 152, 169], $post_id )。
  • 如果要判断的是自定义分类法,替换成has_term()函数即可,用法和has_category()类似,第三个参数填自定义分类法的别名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:15:03