Skip to content

Instantly share code, notes, and snippets.

@kartikparmar
Created November 6, 2018 05:30
Show Gist options
  • Save kartikparmar/6f908567224a02ce746f7e102f76193a to your computer and use it in GitHub Desktop.
Save kartikparmar/6f908567224a02ce746f7e102f76193a to your computer and use it in GitHub Desktop.
Automatically adding the product to the cart for only specific user roles.
<?php
/*
* Automatically adding the product to the cart for only specific user roles.
*/
function aaptc_add_product_to_cart( $item_key, $product_id ) {
$product_category_id = 123; // cricket bat category id
$product_cats_ids = wc_get_product_term_ids( $product_id, 'product_cat' );
$user = wp_get_current_user(); // This will fetch current user's role
$allowed_roles = array( 'booking_agent', 'perfecth' ); // These are the list of allowed user role.
if ( array_intersect( $allowed_roles, $user->roles ) ) { // This is the condition to add free product to cart for only specific user roles
if ( ! is_admin() && in_array( $product_category_id, $product_cats_ids ) ) {
$free_product_id = 12989; // Product Id of the free product which will get added to cart
$found = false;
//check if product already in cart
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->get_id() == $free_product_id )
$found = true;
}
// if product not found, add it
if ( ! $found )
WC()->cart->add_to_cart( $free_product_id );
} else {
// if no products in cart, add it
WC()->cart->add_to_cart( $free_product_id );
}
}
}
}
add_action( 'woocommerce_add_to_cart', 'aaptc_add_product_to_cart', 10, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment