Snippet para configurar a qué categorías de producto quieres que se aplique y qué pasarelas mostrar en esos casos.
Para personalizarlo con tus categorías y pasarelas debes:
- En la línea de código 6 reemplazar los slugs de categorías que hay de ejemplo, por los de tus categorías. Para conocer el slug de una categoría solo tienes que entrar en “Productos > Categorías” y fijarte en la columna “Slug” del listado para saber cuál le corresponde.
- En la línea de código 7 reemplazar los IDs de las pasarelas que he usado de ejemplo, por los que a ti te interese mostrar.
Snippet para configurar los métodos de pago según la categoría de producto en WooCommerce
// Muestra determinados métodos de pago en función de la categoría del producto add_filter( 'woocommerce_available_payment_gateways', 'show_payment_gateways_based_on_products_categories', 1, 1 ); function show_payment_gateways_based_on_products_categories( $methods ){ $new_methods = $methods; $products_categories_list = array( 'music', 'clothing' ); //---- Aquí debes introducir el listado de slugs de categorías de productos separados por coma. $payment_gateways_list = array( 'paypal', 'cod' ); //---- Aquí debes introducir el listado de IDs de métodos de pago permitidos para estos productos, por ejemplo; array( 'paypal', 'cod' ) $cart_content = WC()->cart->cart_contents; foreach ( $cart_content as $key => $product ) { if ( belongs_to_product_category( $product, $products_categories_list ) ) { // Reset payment methods $new_methods = array(); foreach ( $methods as $key => $payment_method ) { if ( in_array( $key, $payment_gateways_list ) ) { $new_methods[ $key ] = $payment_method; } } break; } } return $new_methods; } // Comprueba si un producto pertenece a un listado específico de categorías function belongs_to_product_category( $product, $categories_list ){ $product_cats_slugs = array(); // Obtiene las categorías de producto a las que pertenece $product_cats = wp_get_post_terms( $product[ 'product_id' ], 'product_cat' ); foreach ( $product_cats as $key => $term ) { $product_cats_slugs[] = $term->slug; } // Chequea si las categorías del producto están en el listado foreach ( $categories_list as $key => $category ) { if ( in_array( $category , $product_cats_slugs ) ) { return true; } } return false; }