除非在管理面板

时间:2015-10-24 20:01:52

标签: wordpress

您好,我正在使用带有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角色,而不是将最终成员角色更新为高级版,如果S2member_level0表示成员没有成员资格或已经过期,那么就会改变最终成员角色回到member,这是wordpress角色的订阅者。

问题: 它的工作原理只有当我刷新wordpress管理面板用户部分而不是一切更新如果我不刷新它并且用户s2member角色改变它没有反应用户仍然只能访问高级用户部分但是当我刷新或访问用户时wordpress admin面板部分所有应在没有此操作更新的情况下更新的角色。

为什么会发生这种情况以及如何解决?

2 个答案:

答案 0 :(得分:0)

对于像我这样的人解决方案:

    global $ultimatemember;
$user_id = get_current_user_id();
if( current_user_is(s2member_level1) ) {
  update_user_meta($user_id, 'role', 'premium');
  delete_option( "um_cache_userdata_{$user_id}" );
} elseif ( current_user_is(s2member_level0) ){
  update_user_meta($user_id, 'role', 'member');
  delete_option( "um_cache_userdata_{$user_id}" );
} else {

}

我添加了delete_option( "um_cache_userdata_{$user_id}" );

你可能会问这是什么,插件最终成员有一个非常愚蠢的缓存系统,如果你想使用一些自定义的东西,它不包括他们的缓存清理,所以每当你去用户的最终成员清除缓存的地方之一页面已加载,最好将此代码包含在您将来要做的所有自定义代码中,因为它不会因为缓存问题而无法工作...

答案 1 :(得分:0)

我不明白为什么他们需要缓存用户数据,无论如何我遇到了与高级自定义字段相同的问题。

我使用ACF在用户个人资料页面上显示和管理自定义用户字段。

但是这个页面上的每个更改都不会在其模态信息页面上显示,因为它们有缓存。

我删除了所有旧缓存,然后我关闭了:

终极会员 - >设置 - >高级 - >停止缓存用户的个人资料数据

然后,他们每次都会从提交密钥的usermeta获取数据。