Cómo deshabilitar el método de pago para una categoría específica

Publicado: 2020-09-01

WooCommerce Deshabilitar el método de pago para una categoría específica ¿Está ejecutando una tienda WooCommerce y desea saber cómo puede deshabilitar el método de pago para una categoría específica o múltiples métodos de pago según las categorías de productos que están presentes en el carrito? Si está buscando una solución que se centre en las categorías de productos, pero que con algunos pequeños cambios también se pueda cambiar para las clases de envío, por ejemplo, en los propios productos, este artículo lo guiará sobre cómo lograrlo.

Deshabilitar el método de pago para una categoría específica

Un buen ejemplo en el que este enfoque es útil es cuando los propietarios de tiendas WooCommerce tienen una categoría que contiene solo productos de alto precio y quieren que los clientes paguen con transferencias bancarias en lugar de usar una tarjeta de crédito. Este es solo un ejemplo de las muchas situaciones en las que puede necesitar desactivar un método de pago para una categoría.

Si no es experto en tecnología, puede optar por un complemento premium para hacer el trabajo por usted. Un ejemplo es el complemento de pago condicional de WooCommerce, que lo ayuda a crear condiciones en las que sus métodos de pago se habilitarán o deshabilitarán. Si no eres tan bueno usando código, esta será la mejor solución premium que deberías considerar.

Además, este complemento le permite crear condiciones ilimitadas y usar, por ejemplo, los totales del carrito, el país de facturación, el rol del usuario y mucho más para definir qué pasarela de pago muestra y cuál no.

Complemento de pago condicional de WooCommerce

Sin embargo, para este breve tutorial, le mostraré cómo deshabilitar un método de pago para una categoría específica usando fragmentos de código PHP.

Pasos para deshabilitar el método de pago para una categoría específica usando un fragmento de código PHP

Estos son los sencillos pasos que debe seguir:

  1. Inicie sesión en su sitio de WordPress y acceda al Panel como usuario administrador.
  2. En el menú del panel, haga clic en Menú de apariencia > Menú del editor de temas . Cuando se abra la página del Editor de temas , busque el archivo de funciones del tema donde agregaremos la función que deshabilitará el método de pago para una categoría específica.
  3. Agregue el siguiente código al archivo php :
 /**
 * @snippet Deshabilitar método de pago para categoría específica
*/


add_filter('woocommerce_disponible_pago_puertas de enlace', 'njengah_unset_gateway_by_category');


función njengah_unset_gateway_by_category ($ available_gateways) {

    si (is_admin()) devuelve $accesorios_disponibles;

    if ( ! is_checkout() ) devuelve $accesorios_disponibles;

    $deshabilitado = falso;

    $category_ids = matriz (8, 37);

    foreach (WC()->carrito->get_cart_contents() as $clave => $valores) {

        $términos = get_the_terms( $valores['product_id'], 'product_cat' );   

        foreach ($términos como $término) {       

            if ( in_array( $term->term_id, $category_ids ) ) {

                $no establecido = verdadero;

                descanso;

            }

        }

    }

    if ( $unset == true ) unset( $available_gateways['cheque'] );

    devolver $accesorios_disponibles;

}
  1. Estos serán los resultados deshabilitar un método de pago para una categoría específica

Recuerde agregar la ID de categoría correcta que se encuentra en su tienda WooCommerce para que este código funcione.

Si no le gusta usar el ID de categoría, también puede usar el slug de categoría en su tienda WooCommerce. Puede optar por usarlos, ya que son más fáciles de entender para futuras referencias.

Pasos para deshabilitar el método de pago para una categoría específica usando slugs de categoría

  1. Inicie sesión en su sitio de WordPress y acceda al Panel como usuario administrador.
  2. En el menú del panel, haga clic en Menú de apariencia > Menú del editor de temas . Cuando se abra la página del Editor de temas , busque el archivo de funciones del tema donde agregaremos la función que deshabilitará el método de pago para una categoría específica.
  3. Agregue el siguiente código al archivo php :
 /**

 * @snippet Deshabilitar la pasarela de pago según la categoría.

*/

función njengah_disable_payment_gateway_category ($ puertas de enlace) {

// Categorías que deshabilitarán la pasarela de pago

$category_slugs = array( 'accesorios', 'otra-categoria' );

$category_ids = get_terms( array( 'taxonomy' => 'product_cat', 'slug' => $category_slugs, 'fields' => 'ids' ) );


// Verifique cada artículo del carrito para la categoría dada

foreach (WC()->carrito->get_cart() as $item) {

$producto = $elemento['datos'];

if ( $producto && array_intersect( $category_ids, $producto->get_category_ids() ) ) {

unset ($ puertas de enlace ['cod']); // Deshabilitar la pasarela de pago 'cod' cuando el producto tiene una de las categorías

descanso;

}

}

devolver $puertas de enlace;

}

add_filter('woocommerce_disponible_pago_puertas de enlace', 'njengah_disable_pago_puerta de enlace_categoría');
  1. este sera el resultado deshabilitar el método de pago para una categoría específica

Recuerde agregar el slug de categoría correcto y debe definir la pasarela de pago que desea deshabilitar. Para mi ejemplo, he usado 'cod' para representar el pago contra reembolso.

Es importante tener en cuenta que el identificador de la pasarela de pago también debe cambiarse por el que desee deshabilitar cuando la categoría dada esté presente en el carrito.

  • Transferencia bancaria (bac)
  • Cheque (cheque)
  • Contrareembolso (cod)
  • PayPal (PayPal)

Sin embargo, si no está utilizando una de las pasarelas de pago predeterminadas, no se preocupe, ya que todavía hay una manera fácil de averiguar el ID de la pasarela de pago. Puede hacer esto yendo a la página de configuración de la pasarela de pago y encontrará la identificación allí.

Por ejemplo, para la opción Contra reembolso en la página de configuración, esta será la URL: wp-admin/admin.php?page=wc-settings&tab=checkout&section=cod

Conclusión

En esta publicación, ha aprendido cómo deshabilitar el método de pago para una categoría específica utilizando dos métodos. Puede definirlos utilizando ID de categoría de producto o slugs de categoría para una fácil referencia futura. Recuerda usar el ID de categoría o slug que está en tu tienda WooCommerce para agregar esta funcionalidad.

Artículos similares