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;
}
Ver más tutoriales de: WooCommerce

Tutoriales relaccionados

¿Necesitas un desarrollo a medida?

Login para aceder

David Lanau Consultor de Marketing Online
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.