使用WP Show Posts插件做ACF自定义字段meta查询无结果如何解决
问题修复方案
你猜测的原因成立,WP Show Posts默认查询的是原生文章类型post,如果未在列表后台指定查询trees自定义文章类型,自然无法匹配到对应内容。除此之外还有字段比对类型的问题也会导致无结果,修正方案如下:
必改项
- 补充自定义文章类型指定:要么直接在ID为4566的WP Show Posts列表后台设置中,将文章类型选择为
trees,要么在过滤代码中手动添加post_type参数 - 给meta_query增加数值类型声明:ACF数字字段存储为数值格式,WordPress默认meta查询按字符串比对,会导致大小比较逻辑失效,需要添加
type参数指定为NUMERIC
修正后的完整代码
add_filter( 'wp_show_posts_shortcode_args', function( $args, $settings ) { if ( 4566 === $settings['list_id'] ) { $args['post_type'] = 'trees'; $args['meta_query'] = array( array( 'key' => 'popularity', 'value' => 10, 'compare' => '<', 'type' => 'NUMERIC' ) ); } return $args; }, 15, 2 );
额外排查项
- 确认WP Show Posts列表ID确实为4566,可在列表编辑页的浏览器地址栏查看
post参数的取值 - 确认存在至少一篇
trees类型文章的popularity字段填写了小于10的数值,空值字段不会被查询命中 - 恢复之前修改的WP Show Posts插件核心代码为官方原版,上述过滤代码无需修改插件核心即可生效
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

