您好,我正在使用带有S2member pro插件的Ultimate Member插件,最终成员有自己的角色,称为社区角色 . S2member也有自己的角色叫 s2member_level1
我试图将那些2组合起来,每当 s2member_level1
角色有一些用户最终成员社区角色时,也会改为溢价 . 我正在使用此代码来实现这一目标 .
global $ultimatemember;
$user_id = get_current_user_id();
if( current_user_is(s2member_level1) ) {
update_user_meta($user_id, 'role', 'premium');
} elseif ( current_user_is(s2member_level0) ){
update_user_meta($user_id, 'role', 'member');
} else {
}
它的工作方式就像某个人具有 s2member_level1
角色而不是将最终成员角色更新为premium,如果 S2member_level0
表示成员没有成员资格或已经过期,那么它也会将最终成员角色更改回 member
,这是wordpress角色的订阅者 .
Problem: 它只有当我刷新wordpress管理面板用户部分而不是一切更新如果我不刷新它和用户s2member角色改变它没有反应用户仍然只能访问高级用户部分,但当我刷新或访问用户wordpress管理面板部分应该更新的所有角色,不更新此操作 .
为什么会发生这种情况以及如何解决?
2 回答
像我这样的人解决方案:
我添加了
delete_option( "um_cache_userdata_{$user_id}" );
你可能会问这是什么,插件最终成员有一个非常愚蠢的缓存系统,如果你想使用一些自定义的东西,它不包括他们的缓存清理,所以每当你去用户的时候,其中一个终端成员清除缓存时加载页面,最好将此代码包含在将来你将要做的所有自定义代码中,因为它不会因为缓存问题而无法工作...
我不明白为什么他们需要缓存用户数据,无论如何我遇到了与高级自定义字段相同的问题 .
我使用ACF在用户 Profiles 页面上显示和管理自定义用户字段 .
但是这个页面上的每个更改都不会在其模态信息页面上显示,因为它们有缓存 .
我已删除所有旧缓存然后我关闭:
Ultimate Member -> Settings -> Advanced -> Stop caching user’s profile data
然后,他们每次都会从提交密钥的usermeta获取数据 .