-
Este snippet de código permite deshabilitar automáticamente PayPal como método de pago cuando se detectan productos de categorías específicas en el carrito de compras. Esta funcionalidad es especialmente útil cuando necesitas controlar qué métodos de pago están disponibles según los productos que el cliente desea comprar.
¿Cuándo usar este código?
- Cuando tengas productos que no pueden ser vendidos a través de PayPal
- Para implementar restricciones de pago basadas en categorías de productos
- Cuando necesites forzar métodos de pago específicos para ciertas categorías
- Para cumplir con políticas de venta o requisitos específicos de tu tienda
Personalización
- Modifica los IDs de categorías en el array
$category_ids = array(6664, 6663)
según tus necesidades - Si necesitas deshabilitar otra pasarela de pago, reemplaza 'paypal' en
unset($available_gateways['paypal'])
con el ID correspondiente
Funcionamiento
El código se ejecuta automáticamente durante el proceso de checkout, verificando el carrito de compras y deshabilitando PayPal si encuentra productos en las categorías especificadas, sin afectar otras áreas de tu tienda.
/**
* Deshabilita PayPal para categorías específicas en WooCommerce
*
* @package WooCommerce
* @author Ariapsa
* @description Elimina PayPal como método de pago cuando hay productos de categorías específicas en el carrito
* @snippet true
*/
add_filter('woocommerce_available_payment_gateways', 'ariapsa_quitar_pasarela_por_categoria');
function ariapsa_quitar_pasarela_por_categoria($available_gateways) {
// Si estamos en el panel de administración, no hace cambios
if (is_admin()) return $available_gateways;
// Si no estamos en la página de checkout, no hace cambios
if (!is_checkout()) return $available_gateways;
// Variable para controlar si debemos quitar la pasarela
$unset = false;
// Array con los IDs de las categorías donde queremos desactivar la pasarela
$category_ids = array(6664, 6663);
// Revisa cada producto en el carrito
foreach (WC()->cart->get_cart_contents() as $key => $values) {
// Obtiene las categorías del producto actual
$terms = get_the_terms($values['product_id'], 'product_cat');
// Revisa cada categoría del producto
foreach ($terms as $term) {
// Si el producto está en alguna de las categorías especificadas
if (in_array($term->term_id, $category_ids)) {
$unset = true;
break;
}
}
}
// Si encontramos un producto en las categorías especificadas,
// eliminamos PayPal de las pasarelas disponibles
if ($unset == true) {
unset($available_gateways['paypal']);
}
return $available_gateways;
}