How can I change a user's role after purchasing from a specific WooCommerce category (using functions.php)?

  

4
Topic starter

Is it possible to change a user's role after they purchase from a specific WooCommerce product category using a code snippet in the functions.php file?

Thanks!

2 Answers
3

Use this code:

function change_user_role_after_category_purchase($order_id) {
    // Get the order object
    $order = wc_get_order($order_id);

    // Get the user ID of the customer
    $user_id = $order->get_user_id();

    // Define the target product category
    $target_category = 'example-category'; // Replace with your category slug

    // Check if the order contains products from the target category
    foreach ($order->get_items() as $item_id => $item) {
        $product_id = $item->get_product_id();

        if (has_term($target_category, 'product_cat', $product_id)) {
            // Change the user role
            $user = new WP_User($user_id);
            $user->set_role('new_role'); // Replace 'new_role' with your desired role slug

            // Exit the loop after finding a match
            break;
        }
    }
}

add_action('woocommerce_order_status_completed', 'change_user_role_after_category_purchase');
  • Replace the placeholders:

    • Replace example-category with the slug of your target product category.
    • Replace new_role with the role you want to assign (e.g., subscriber, customer, editor, etc.).
  • Add the code:

    • Navigate to your WordPress Dashboard.
    • Go to Appearance > Theme File Editor.
    • Open the functions.php file of your active theme and paste the code at the bottom.
  • Test the functionality:

    • Make a test purchase from the target category and ensure the user role is updated after the purchase is marked as "Completed."
2

You can also use the plugin Automatic User Roles Switcher for WooCommerce (although I had a conflict with it):

https://woocommerce.com/products/automatic-user-roles-switcher/

Share: