fbpixel

Comparto - Como eliminar métodos de pagos por atributo del producto

Colocar esto en el functions.php de tu tema o tema hijo:

function conditional_payment_gateways_pablo( $available_gateways ) {
$attribute = null;
foreach ( WC()->cart->get_cart() as $cart_item ) {
$product = $cart_item[‘data’];

   //Nombre de tu atributo que quieres analizar
   $attribute = $product->get_attribute( 'cuotas' ); 
   //echo $attribute.'<br>';

}
/Preguntame si esta definido y es no null el atributo anteriormente asignado/
if ( isset($attribute) ) {
if($attribute==‘Efectivo’){
unset($available_gateways[‘cod’]); ////Desactivo GETNET
unset($available_gateways[‘woo-mercado-pago-custom’]); //Desactivo Mercado Pago
}else{
if($attribute==‘1 cuota’){
unset($available_gateways[‘bacs’]); //Desactivo Transferencia Bancaria
}else{
if($attribute==‘12 cuotas’){
unset($available_gateways[‘bacs’]); //Desactivo Transferencia Bancaria
}else{
if($attribute==‘18 cuotas’){
unset($available_gateways[‘bacs’]); //Desactivo Transferencia Bancaria
}
}
}
}
}
else {
//echo ‘Este producto no tiene asignado un atributo’;
}
return $available_gateways;
}

Versiones usadas:
Woocommerce: 5.6.0
WordPress: 5.8

Dejo todos los snipet que encontré:
data-gateway_id=“cod” (Contra reembolso) – Pagos por GETNET
data-gateway_id=“woo-mercado-pago-custom” (Mercado Pago - Checkout personalizado) – Paga con tarjetas de débito y crédito por MERCADOPAGO
data-gateway_id=“bacs” (Transferencia bancaria directa) – Transferencia bancaria
data-gateway_id=“woo-mercado-pago-basic” (Mercado Pago - Checkout Pro) – Paga con el medio de pago que prefieras
data-gateway_id=“cheque” (Pagos por cheque)
data-gateway_id=“paypal” (PayPal estándar) – PayPal
data-gateway_id=“woo-mercado-pago-ticket” (Mercado Pago - Checkout personalizado) – Paga con dinero en efectivo

Para encontrar el que snipet que se usa dentro del $available_gateways[‘aqui’] debes hacer clic derecho sobre la siguiente ubicación: Woocommerce->Ajustes->Pagos->clic derecho sobre uno de los métodos de pagos y verán el listado anteriormente mencionado.