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

WordPress按ACF字段nezobrazovat为false筛选文章失效问题

问题原因

你的代码未生效有两个核心错误:

  • 直接在$args顶层写key、value是WordPress早期遗留的旧写法,新版本中很容易被查询解析器忽略,自定义字段筛选必须使用meta_query参数声明规则。
  • ACF的True/False布尔类型字段不会存储yes/no这类值:开关开启(值为true)时数据库存字符串'1',开关关闭(值为false)时,手动保存过的文章存字符串'0',从未编辑保存过该字段的文章,数据库中根本没有这条meta记录,你写'value'=>'no'完全匹配不到任何对应值。
修正后代码
$args = array(
    'posts_per_page' => 3,
    'post_type' => 'mycustompost',
    'meta_query' => array(
        'relation' => 'OR',
        // 匹配已保存过字段、值为false的文章
        array(
            'key' => 'nezobrazovat',
            'value' => '1',
            'compare' => '!=',
        ),
        // 兼容从未保存过该字段、默认值为false的文章
        array(
            'key' => 'nezobrazovat',
            'compare' => 'NOT EXISTS',
        ),
    ),
);
$query = new WP_Query($args);
补充说明
  • 不建议直接写'value' => false或者'value' => 0做匹配,WordPress的meta查询对布尔假值、空值的匹配存在已知兼容问题,用!= '1'的规则匹配逻辑最稳妥:只要不是明确开启了"nezobrazovat"开关的文章,都会被筛选出来,完全符合你要字段值为false的需求。
  • 如果你确认所有该类型文章都已经在后台手动保存过、不存在缺失该字段记录的情况,可以删掉NOT EXISTS那一段规则,简化查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:57:32