Configurar métodos pago según categoría de producto WooCommerce

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:

  1.  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.
  2.  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;
}
Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Tutoriales relaccionados

Ir arriba
LOGIN
REGISTRO