Skip Navigation

[Résolu] Change the user role on form's submission

This support ticket is created Il y a 3 années et 7 mois. There's a good chance that you are reading advice that it now obsolete.

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.

No supporters are available to work today on Toolset forum. Feel free to create tickets and we will handle it as soon as we are online. Thank you for your understanding.

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 réponses, has 2 voix.

Last updated by Pat Il y a 3 années et 7 mois.

Assisted by: Waqar.

Auteur
Publications
#1763271

Pat

Hello,

I have a forms that is linked to a WC product thanks to a specific custom field integrated inside the form.
The form is published as soon as the product is paid.
Now, I need to change the role of the user that have created the new post and don't know which hook I need to use for that.
Can you helps please?
Regards
Pat

#1763339

Waqar
Supporter

Languages: Anglais (English )

Timezone: Asia/Karachi (GMT+05:00)

Hi,

It seems that our chat was disconnected so I've moved the conversation to this support ticket so that you can share any update or a follow-up question.

You're welcome to reach us through a new ticket anytime, for a different question or concern.

regards,
Waqar

#1764847

Pat

Hi Waqar,

Thanks for having added this ticket for me.

During our conversation, you proposed to use cred_commerce_after_order_completed
I just want to be sure that this will cover my case. Here some additional explanations :

I have a postype (Adhesion) and have created a Toolset Form to create a post in the frontend. This form is a WC form and I have inside a radio field that is used to define the product that will be associated to the buying process.
As soon as a user validate the form, the post is created and the related product is added to the cart. This part is fully working.

Now, I need to add a hook in order to change the user's role (the user that have created the post) depending of the product he has chosen in the form. I have this hook currently and it is working fine but I have placed it as a cred_save_data which change the role as soon as the form is validated.
What I need is :
1. to make the post published when payment is made (done thanks to the standard WC / Toolset process)
2. to change the user role when the order is completed (either by a payment or by a manual action in the WordPress admin).

Could you confirm how I can manage this?

Regards
Pat

#1765927

Waqar
Supporter

Languages: Anglais (English )

Timezone: Asia/Karachi (GMT+05:00)

Hi Pat,

Thanks for writing back.

I've performed some tests on my website and can confirm that the "cred_commerce_after_order_completed" hook will work for your second requirement.
( ref: https://toolset.com/documentation/programmer-reference/cred-commerce-api/#cred_commerce_after_order_completed )

An example snippet that I used, for replacing user's "customer" role to "author", once the order gets completed:


add_action( 'cred_commerce_after_order_completed', 'my_hook', 10, 1 );
function my_hook( $data ) {
	// check for a specific form
	if($data['extra_data'][0]['cred_form_id'] == 123) {
		$user_id = $data['user_id'];
		$user = new WP_User( $user_id );

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

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

Please replace "123" with the actual post form's ID and "customer" and "author" with the actual current role and the new one, respectively.

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

regards,
Waqar

#1767751

Pat

Hi Waqar
Thanks for helping.
Regards
Pat

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