Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Here is an example with a custom hooked function in woocommerce_available_payment_gateways filter hook, where I can disable payment gateways based on the cart items (product type):
- add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);
- function conditional_payment_gateways( $available_gateways ) {
- // Not in backend (admin)
- if( is_admin() )
- return $available_gateways;
- foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
- $prod_variable = $prod_simple = $prod_subscription = false;
- // Get the WC_Product object
- $product = wc_get_product($cart_item['product_id']);
- // Get the product types in cart (example)
- if($product->is_type('simple')) $prod_simple = true;
- if($product->is_type('variable')) $prod_variable = true;
- if($product->is_type('subscription')) $prod_subscription = true;
- }
- // Remove Cash on delivery (cod) payment gateway for simple products
- if($prod_simple)
- unset($available_gateways['cod']); // unset 'cod'
- // Remove Paypal (paypal) payment gateway for variable products
- if($prod_variable)
- unset($available_gateways['paypal']); // unset 'paypal'
- // Remove Bank wire (Bacs) payment gateway for subscription products
- if($prod_subscription)
- unset($available_gateways['bacs']); // unset 'bacs'
- return $available_gateways;
- }
- Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
- All code is tested on Woocommerce 3+ and works.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement