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

使用meta_query按州和城市对WordPress自定义字段排序失败

解决WordPress ACF自定义字段按州/城市排序的问题

你的代码存在几个关键问题导致排序失效,以下是修正方案和问题说明:

问题点拆解

  • numberposts是get_posts()的专属参数,WP_Query无需使用,保留posts_per_page即可
  • public不属于WP_Query的合法参数,直接移除
  • meta_query中未指定字段类型,字符串类字段(如国家、城市)必须声明type,否则会按数值规则排序,导致结果不符合预期
  • 需确认ACF字段的meta_key完全匹配(比如hotel_address_city_state是否确实是存储城市/州的字段键)

修正后的代码

$hotel = new WP_Query( array(
    'post_type'      => 'hotel',
    'post_status'    => 'publish',
    'posts_per_page' => 500,
    'meta_query'     => array(
        'relation' => 'AND',
        'country_clause' => array(
            'meta_key' => 'hotel_address_country',
            'compare'  => 'EXISTS',
            'type'     => 'CHAR' // 指定字符串类型排序
        ),
        'city_clause' => array(
            'meta_key' => 'hotel_address_city_state',
            'compare'  => 'EXISTS',
            'type'     => 'CHAR'
        ),
    ),
    'orderby'        => array(
        'country_clause' => 'DESC',
        'city_clause'    => 'ASC',
    ),
) );

额外提示

  • 如果你的ACF地址字段是拆分存储的(城市、州为单独字段),请将hotel_address_city_state替换为对应城市字段的meta key,排序会更精准
  • 若排序仍异常,可通过var_dump($hotel->request)输出生成的SQL语句,检查排序逻辑的SQL是否符合预期,排查字段存储格式问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:25:53