Descargas ilimitadas y Licencias Originales

Suscríbete o Inicia Sesión y descarga todos los recursos que quieras sin coste adicional. Todos los Plugins y Themes de WordPress en un clic. Además podrás acceder a Licencias Originales y API Keys.

Muestra ciertos métodos de pago según la categoría del producto

Para configurar qué categorías de productos deben aplicarse y qué pasarelas mostrar en esos casos, sigue estos pasos:

  1. En la línea de código 6, reemplaza los slugs de las categorías que se han utilizado como ejemplo con los de tus propias categorías. Para encontrar el slug de una categoría, simplemente ve a «Productos > Categorías» y observa la columna «Slug» en el listado para identificar cuál es el correspondiente.
  2. En la línea de código 7, sustituye los IDs de las pasarelas que se han utilizado como ejemplo con los IDs de los métodos de pago que deseas mostrar.
// 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;
}

 

Productos destacados