On action, change user role

时间:2021-04-08 作者:Mark Lee

不知道你是否能帮助我。

我正在尝试获取一个操作(geodir\\u after\\u save\\u listing)来更改用户角色。

基本上,在Geo目录中,当用户提交业务列表时,我想将他们的角色从;“成员”;“到”;member\\u with\\u business“;

我相信geo\\u dir\\u after\\u save\\u列表仍然是一个相关的操作(等待GeoDirectory支持部门的响应),所以我认为下面的php代码片段应该可以工作吗?

add_action(\'geodir_after_save_listing\', \'change_user_role_when_submit_business\');

function change_user_role_when_submit_business( $last_post_id, $request_info ) {
  $gd_post_type = geodir_get_current_posttype();

    if ($gd_post_type == \'gd_place\') {

    $user = wp_get_current_user();
    $roles = $user->roles;
    
    if (in_array(\'member\', $roles)){
      
        $user->add_role( \'member_with_business\' );
        $user->remove_role( \'member\' );
    }
  }
}
那些比我更精通php的人有什么想法吗?

1 个回复
SO网友:Bysander

当使用add_action 你需要provide how many of the arguments you\'re planning on using. 默认值1。你没有使用请求信息,所以请摆脱它。第二位geodir_get_current_posttype() link

通读函数是如何工作的,确保它是有意义的,并且能够在您使用它的上下文中工作。它看起来像是从URL读取了一个查询变量-是否存在?

另一种选择可能是自己查这个-看起来你已经有了$last_post_id 变量你不能从中找到你需要的信息吗?

大量的var_转储和死亡可以帮助你诊断你错过了什么。Looks like the plugin author leaves most of them in the code anyway!

相关推荐