• Resolved ukndoit

    (@ukndoit)


    I created a php script that runs after a gravity form is submitted. after I validate the authenticity, I pass them them through a script, that again authenticates the key, to make sure it was just loaded through the scripts, so it cannot be hacked.

    That passthrough script creates the user:

    $_newUserId = wp_create_user( $_newUname, $_newpassword, $_newemail );

    Then that variable has the newly created member Id, so then I use the S2Member system to add the custom fields information:

    $custom_fields = get_user_option('s2member_custom_fields', $_newUserId);
    $custom_fields['first_name'] = $_POST['fname'];
    $custom_fields['last_name'] = $_POST['lname'];
    $custom_fields['referred_by'] = $_POST['rmid'];
    $custom_fields['phone'] = $_POST['phone'];
    $custom_fields['street_address'] = $_POST['street'];
    $custom_fields['street_address2'] = $_POST['street2'];
    $custom_fields['city'] = $_POST['city'];
    $custom_fields['state'] = $_POST['state'];
    $custom_fields['zip'] = $_POST['zip'];
    $custom_fields['country'] = $_POST['country'];
    update_user_option($_newUserId, 's2member_custom_fields', $custom_fields);

    Then I add the custom capability I want them to have access to for filling out that form:

    $tuser = new WP_User($_newUserId);
    $tuser->set_role("s2member_level0");
    $tuser->add_cap('access_s2member_ccap_videotwentyone');

    So I set their role to the level0 that I want them to have access to as now, because they are a new member, and that is the only level they need for this video requirement.

    So I did that and it worked, all of it, except the role. When I viewed the new user I test created, all the custom fields were set, the custom capability was set, but the role was “Blank” the user was not assigned to any role at all.

    I have that role labeled in S2MemberPro as “Free Club Member” and I have it forcing WordPress to use those labels I set in there.

    But how do I set them to the Role of level 0 that I labeled “Free Club Member”?

    was s2member_level0 not right?

    I also tried just “level_0”, but that also resulted in “No Role” for the new user the test created.

    This way:

    $tuser->set_role("level_0");

    Same thing, everything else worked, just no role set.

    Can you tell me what I did wrong?

    Thanks, Richard

    https://www.ads-software.com/plugins/s2member/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter ukndoit

    (@ukndoit)

    I even tried:

    $tuser->set_role("access_s2member_level0");

    That did not work either. Still the new user, was set to “no role”.

    Thread Starter ukndoit

    (@ukndoit)

    I found it. It was “subscriber”… just that. Nothing else.

    When I hovered over that role on the users, I noticed in the statusbar in the url, the role said “subscriber” so I did that and it worked. So it works now. Tested it successfully.

    Yes, subscriber is right. s2Member uses that as effectively its level 0; all the other s2Member levels are actually just the subscriber role with the added capability to access posts and pages protected at the specified level.

    That is how s2Member got its name: subscriber to member.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘setting role not working for create_user after I create the user’ is closed to new replies.