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

遍历WordPress用户时函数仅返回首个用户ID,如何修改实现逐个返回?

问题解决:让每个WordPress用户获取对应ACF分类字段值

你的代码问题出在两个核心点上:

  1. algolia_user_record过滤器本身就是针对单个用户处理的,它的第二个参数就是当前正在处理的用户对象,但你的函数没接收这个参数,反而自行遍历所有用户,完全搞反了逻辑。
  2. return $attributes写在了foreach循环内部,第一次循环就直接返回结果,导致所有用户都只能拿到第一个用户的分类值。

修正后的代码:

add_filter( 'algolia_user_record', 'my_post_attributes', 10, 2 );

function my_post_attributes( $attributes, $user ) {
    // 直接使用过滤器传入的当前用户对象,无需自行遍历所有用户
    $attributes['kategoriat'] = get_field('user_kategoriat', 'user_' . $user->ID );
    return $attributes; 
}

关键修改说明:

  • 函数参数新增$user:algolia_user_record过滤器默认会传递两个参数,第二个就是当前处理的用户对象,必须在函数里接收它才能拿到当前用户的ID。
  • 删除多余的get_users遍历代码:不需要自己查询所有用户,过滤器已经帮你定位到了当前要处理的目标用户。
  • 移除无效循环:现在不需要遍历,直接针对当前用户处理即可,确保每个用户的字段值都是自己对应的内容。

修改后,每个用户在生成Algolia记录时,都会用自身ID获取对应的user_kategoriat字段值,不会再出现所有用户共用第一个用户分类的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:15:24