¿Alguna vez se preguntó si podría alternar las pasarelas de pago en función de si un «tipo de producto» dado está en el carrito de WooCommerce? Por ejemplo, ¿Deshabilite PayPal si hay productos de suscripción simples o habilitan Stripe solo cuando hay productos variables?
Bueno, con este código simple (y los 2 ejemplos) que encuentra a continuación, puede lograrlo para lograrlo. El segundo ejemplo considera el Suscripciones de WooCommerce complemento, ya que esto requiere algunas funciones específicas para el complemento para verificar el tipo de producto. ¡Disfrutar!
Php Snippet 1: Desactive la pasarela de pago basada en el tipo de producto, por ejemplo, el producto «simple» @ WooCommerce Checkout
En este ejemplo, no lo establecemos «paypal«En caso de que haya»simple«Productos en el carrito. También puedes usar «agrupado» y «variable«(«externo«No cuenta, ya que no requiere pago en el sitio), así como otras claves de tipo personalizado agregadas por complementos de terceros.
/** n*@snippet Disable WooCommerce Payment Gateway By Product Type n*@how-to https://tdestudiodesign.com/tutoriales n*@author Tomás Lucas D´Amario, TD Estudio Design n*@compatible WooCommerce 7 n*@community https://tdestudiodesign.com/club */add_filter( 'woocommerce_available_payment_gateways', 'tddesign_disable_payment_by_product_type' ); function tddesign_disable_payment_by_product_type( $available_gateways ) { if ( ! WC()->cart ) return $available_gateways; $types = array(); foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $product = $cart_item['data']; $types[] = $product->get_type() ? $product->get_type() : null; } $types = array_unique( $types );if ( in_array( 'simple', $types ) && isset( $available_gateways['paypal'] ) ) {unset( $available_gateways['paypal'] );}return $available_gateways;}
Php Snippet 2: Desactivar la pasarela de pago basada en suscripciones de WooCommerce Tipo de producto, por ejemplo, «suscripción simple» @ WooCommerce Checkout
En este ejemplo, no lo establecemos «paypal«En caso de que haya»suscripción simple«Productos en el CART (complemento de suscripciones de WooCommerce).
/** n*@snippet Disable WooCommerce Payment Gateway By Subscription Product Type n*@how-to https://tdestudiodesign.com/tutoriales n*@author Tomás Lucas D´Amario, TD Estudio Design n*@compatible WooCommerce 7 n*@community https://tdestudiodesign.com/club */add_filter( 'woocommerce_available_payment_gateways', 'tddesign_disable_payment_by_subscription_product_type' ); function tddesign_disable_payment_by_subscription_product_type( $available_gateways ) {if ( class_exists( 'WC_Subscriptions_Cart' ) && WC_Subscriptions_Cart::cart_contains_subscription() && isset( $available_gateways['paypal'] ) ) {unset( $available_gateways['paypal'] );}return $available_gateways;}
¿Dónde agregar código personalizado?
Debes colocar PHP personalizado en funciones.php y CSS personalizado en style.css del tema de su hijo: ¿Dónde colocar la personalización de WooCommerce?
Este código todavía funciona, a menos que informe lo contrario. Para excluir los conflictos, cambie temporalmente al tema de la tienda, deshabilite todos los complementos, excepto WooCommerce, y pruebe el fragmento nuevamente: Solución de problemas de WooCommerce 101
Contenido relacionado
Tomás Lucas D´Amario
Programador y Desarrollador
Experto en WooCommerce y WordPress. Trabajando como un profesional independiente de WooCommerce desde 2016. Su objetivo es ayudar a los empresarios y desarrolladores a superar sus pesadillas de WooCommerce. Sigueme o contactame por Linkedin