Skip Navigation

[Resolved] Setting a users role after their post is approved

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Karachi (GMT+05:00)

This topic contains 4 replies, has 2 voices.

Last updated by Waqar 1 year, 3 months ago.

Assisted by: Waqar.


I'm using a different login element, and it sets everyone as a subscriber.

I'm setting up a membership site where founders can submit their companies and get access to the startup page. After they register as a subscriber they fill out a post form to list their startup.

I don't want subscribers to have access to anything except the homepage. And I don't want people to get access to the startups page for free without listing their startup first.

Is there a way, once their post is approved/submitted that we could change their role to either author or a custom user type "Founder"?



Thank you for contacting us and I'd be happy to assist.

To approve a user's post and change the user's role, you can create a post edit form. In that form' settings, you can set it to change the post's status to the approved/published status.

And using the custom function attached to the 'cred_save_data' hook, you can change that post's author role to the desired 'approved' user role:

You'll find an example of such a function in this forum ticket:

I hope this helps and please let me know if you need further assistance.



Here's what I did:

add_action('cred_save_data', 'change_user_role_on_save',10,2);
function change_user_role_on_save($post_id, $form_data)
// if a specific form
if ($form_data['id']==302)
$user = wp_get_current_user();
if ( in_array( 'subscriber', (array) $user->roles ) ) {

// Remove role
$user->remove_role( 'subscriber' );

// Add role
$user->add_role( 'founder' );

I put this in the custom code under settings (didn't work)

I then put it in the JS on the form and it didn't work.

Is there something you can see wrong?


I was able to sort through that issue.

But now as I'm working on the post edit form, I'm running into issues.

I'm using elementor so I'm using the shortcode: [cred_form form='post-edit-startups' post='[wpv-search-term param=“post_id”]

The link to edit the post is: hidden link;

It worked for minute and then started displaying: "Form type and post type do not match" -- I've looked through every post on here about that error, and normally it's because the category wasn't matched correctly, or wordpress needed updates. All of my plugins are up to date, and it's mapped correctly.

Is there any other troubleshooting tips?

New threads created by Waqar and linked to this one are listed below:


Thanks for the update and glad that it was sorted out.

I've created a separate ticket for your new question and will follow up on that shortly.
( ref: )

You're welcome to mark this ticket as resolved and start a new one for each new question or concern.

This ticket is now closed. If you're a Toolset client and need related help, please open a new support ticket.