mardi 6 mars 2018

Changing woocommerce customer role if checkbox is checked at checkout

I'm trying to add a custom function to my child-themes functions.php file where a checkbox is added to the bottom of the billing details form on the checkout page.

This checkbox asks the customer if they'd like to become a wholesale customer.

function customise_checkout_field_with_wholesale_option($checkout) {

echo '<div id="wholesale_checkbox_wrap">';
woocommerce_form_field('wholesale_checkbox', array(
    'type' => 'checkbox',
    'class' => array('input-checkbox'),
    'label' => __('Would you like to apply for a wholesale account?'),
    'placeholder' => __('wholesale'),
    'required' => false,
    'value'  => true
), $checkout->get_value('wholesale_checkbox'));
echo '</div>';

}

This works fine, however I'm having trouble with this next part..

I would like the customers user role to save as "wholesale_customer" instead of "customer" if they check the checkbox.

add_action('woocommerce_after_checkout_billing_form', 'customise_checkout_field_with_wholesale_option');

function wholesale_customer( $order_id ) {

$order = new WC_Order( $order_id );

if (isset($_POST['wholesale_checkbox'])) {

    if ($order->user_id > 0) {
        $user = new WP_User($order->user_id);
        // Remove role
        $user->remove_role('customer');
        // Add role
        $user->add_role('wholesale_customer');
    }
}
}
add_action( 'woocommerce_thankyou', 'wholesale_customer' );

The above function works by saving the customer as a "wholesale_customer" when I remove the wholesale_checkbox if statement. But with the if statement included, it always saves the role as "customer".

Where am I going wrong? Cheers




Aucun commentaire:

Enregistrer un commentaire