Skip Navigation

[Résolu] Toolset commerce: product depending on userrole

Ce fil est résolu. Voici une description du problème et la solution proposée.

Problem: I have a Commerce Form that should add different Products to the User's cart based on their assigned role on the site. One role should receive a free Product, and the other role should receive a paid Product.

Solution: In the Form editor, choose the option "Always use the same product regardless of inputs". Select the paid product here to use as the default. Then add this custom code to your child theme's functions.php file:

add_filter( 'cred_commerce_add_product_to_cart', 'different_product_by_role', 10, 3 );
function different_product_by_role( $product_id, $form_id, $post_id ) {
    global $current_user;
  $user_roles = $current_user->roles;
  if ( in_array('klant_abonnement', (array) $user_roles) && $form_id == 12345 ) {
        $product_id = 45678;
    }
    return $product_id;
}

Replace 12345 with the numeric ID of this Commerce Form, and replace 45678 with the numeric ID of the free Product for klant_abonnement Users.

Relevant Documentation:
https://toolset.com/documentation/programmer-reference/cred-commerce-api/#cred_commerce_add_product_to_cart

This support ticket is created Il y a 6 années et 4 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.

Aucun de nos assistants n'est disponible aujourd'hui sur le forum Jeu d'outils. Veuillez créer un ticket, et nous nous le traiterons dès notre prochaine connexion. Merci de votre compréhension.

Sun Mon Tue Wed Thu Fri Sat
8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 - -
13:00 – 17:00 13:00 – 17:00 13:00 – 17:00 13:00 – 17:00 13:00 – 17:00 - -

Supporter timezone: America/New_York (GMT-04:00)

Ce sujet contient 2 réponses, a 2 voix.

Dernière mise à jour par martijnH Il y a 6 années et 4 mois.

Assisté par: Christian Cox.

Auteur
Publications
#963533
Edit Post Form ‹ Recrahome — WordPress - Google Chrome.jpg

I have a Toolset commerce CRED form, with one Woocommerce product assigned. This is al working well.

Now I would like to make submitting the form for free, depending on the (logged in) userrole. So I created another product (with a price of €0) and would like to let the product depend on the userrole (userrole 'klant_abonnement' = free, userrole 'klant_incidenteel' = €70).

I don't have a clue how to do this. Already tried some things with generic fields, but I can't even select a custom field (see screenshot).

Thanks for your help!
Martijn Hoogma

#1003295

Hi, this will require a bit of custom code using our Commerce API function cred_commerce_add_product_to_cart. I can help you implement it. In the Form editor, choose the option "Always use the same product regardless of inputs". Select the paid product here to use as the default. Then add this custom code to your child theme's functions.php file:

add_filter( 'cred_commerce_add_product_to_cart', 'different_product_by_role', 10, 3 );
function different_product_by_role( $product_id, $form_id, $post_id ) {
    global $current_user;
  $user_roles = $current_user->roles;
  if ( in_array('klant_abonnement', (array) $user_roles) && $form_id == 12345 ) {
        $product_id = 45678;
    }
    return $product_id;
}

Replace 12345 with the numeric ID of this Commerce Form, and replace 45678 with the numeric ID of the free Product for klant_abonnement Users.

https://toolset.com/documentation/programmer-reference/cred-commerce-api/#cred_commerce_add_product_to_cart

#1069125

Thanks Christain. Problem solved...