如何发射';档案更新';在wp admin/users.php页面上添加/删除角色?(或在这种情况下使用什么其他挂钩) 背景

如何发射';档案更新';在wp admin/users.php页面上添加/删除角色?(或在这种情况下使用什么其他挂钩) 背景,php,wordpress,hook,multiple-users,Php,Wordpress,Hook,Multiple Users,在将特定角色(裁判)添加到配置文件时,我在自定义帖子类型上添加一个配置文件页面,并使用帖子和用户上的元值将其链接到该用户。我还检查某个用户以前是否担任过该角色(通过该用户的元值),然后相应地添加/编辑他们的配置文件页面 当我从用户编辑页面添加角色时,所有这些都可以正常工作 http://localhost:8888/wp-admin/user edit.php?user_id={SOME user id} 问题 但是当角色从/wp admin/users.php()profile\u updat

在将特定角色(裁判)添加到配置文件时,我在自定义帖子类型上添加一个配置文件页面,并使用帖子和用户上的元值将其链接到该用户。我还检查某个用户以前是否担任过该角色(通过该用户的元值),然后相应地添加/编辑他们的配置文件页面

当我从用户编辑页面添加角色时,所有这些都可以正常工作
http://localhost:8888/wp-admin/user edit.php?user_id={SOME user id}


问题 但是当角色从
/wp admin/users.php
()
profile\u update
钩子不会被触发。

那么有没有办法扩展
profile\u update
以包含来自
/wp admin/users.php
的更新,或者从
/wp admin/users.php
中删除所有操作按钮(或者其他解决方案)

尝试解决问题
我可以用这个过滤器删除批量操作按钮
add_filter('bulk_actions-users','uuu return_empty_array')
但找不到筛选器以删除右侧的操作按钮


问题代码
更新:找到解决方案

所以我认为,
profile\u update
hook的工作方式与它的预期不同,或者我用错了。我发现,
profile\u update
在推送帖子/用户更新之前启动,这意味着如果我要检查meta的值,它们将是旧的,即使在中,它说它将用户的旧值作为变量传递给被调用的函数,我觉得这意味着如果我在函数中查询元值,它将是更新的

如果您需要一个钩子来检查任何
post类型(甚至是用户)上是否有
metavalue
,更重要的是,在将更新推送到数据表后激发,请使用
updated{YOUR post type}\u meta
()

所以不是

add_action( 'profile_update', 'site_refProfile_existingUser', 10, 2);
我用过这个

add_action( 'updated_user_meta', 'site_refProfile_existingUser',10, 2);
另外,如果你正在更新用户的meta,请确保在函数中,你在开始时
删除\u action
,在结束时
添加\u action
,否则我认为它将陷入无限循环

function site_refProfile_existingUser( $meta_id, $user_id) {
    remove_action( 'updated_user_meta', 'site_refProfile_existingUser',10, 2);

    // your code.....

    add_action( 'updated_user_meta', 'site_refProfile_existingUser',10, 2);
}
(无限循环的事情是一个假设,因为它发生在我之前使用另一个钩子时)

function site_refProfile_existingUser( $meta_id, $user_id) {
    remove_action( 'updated_user_meta', 'site_refProfile_existingUser',10, 2);

    // your code.....

    add_action( 'updated_user_meta', 'site_refProfile_existingUser',10, 2);
}