SOLUTION MAKER , Proveedor Nacional.
RUC 10427462451
Atención: Lunes a Viernes de 9am a 6pm

Ocultar medios de pago por producto y categoria de producto

A veces vamos a necesitar ocultar nuestros medios de pagos, y con este procedimiento, usando snippets, vamos a mostrar  sólo los medios de pagos que sean necesarios para que el cliente no se confunda, de esa manera es una ayuda al proceso de pago, tendrás una página de finalizar pago más amigable y sencilla de entender. Así que te compartimos esta valiosa información esperando tu gratitud siguiendo nuestras redes sociales, especialmente el canal, donde encontrarás semanalmente varias soluciones.

Ocultar medios de pagos por producto

/* Quitar métodos de pago Oculta las pasarelas de pago disponibles por producto
* Añade este codigo a tu plugin de funciones o el archivo functions.php del tema activo
* En el ejemplo se desactivan las pasarelas Paypal (paypal) y contrareembolso (cod) pero
* tambien puedes desactivar otras como transferencia bancaria (bacs) o Stripe (stripe), por ejemplo
* Cambia los IDs de producto de ejemplo en el array $prodids, p.ej. $prodids=array(15,30);
*/
//Primero comprobamos si el producto esta disponible o no en el carrito.
function is_product_in_cart( $prodids ){
	$product_in_cart = false;
	foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
		$product = $cart_item['data'];
    		if ( in_array( $product->id, $prodids ) ) {
	        	$product_in_cart = true;
		}
	}
	return $product_in_cart;
}
//  Luego ya desactivamos la pasarela que queramos por ID de producto. Cambia los números de ID en el array $prodids
function payment_gateway_disable_product( $available_gateways ) {
	global $woocommerce;
	//print_r( $available_gateways );
	$prodids=array(15,30);
	if ( isset( $available_gateways['paypal'] ) && is_product_in_cart( $prodids ) ) {
	    unset(  $available_gateways['paypal'] );
	}
        if ( isset( $available_gateways['cod'] ) && is_product_in_cart( $prodids ) ) {
	    unset(  $available_gateways['cod'] );
	}
	return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_product' );

 

Ocultar medios de pago por categoría de producto

/* Oculta pasarelas de pago si un producto de una categoría está en el carrito.
 * Si se añaden varios productos y solo uno es de la categoría tampoco aparece la pasarela ocultada
 * Uso:unset available_gateways : Nombre de las pasarelas de pago de WooCommerce que no se verán - paypal, cod, bacs y cheque
 * category_ids :  Los IDs de categorías para las que ocultar la pasarela de pago. El ID lo tienes haciendo clic en la categoria en Productos -> Categorias, se mostrará el "tag_ID" en la barra de direcciones
 */
add_filter( 'woocommerce_available_payment_gateways', 'solutionm_quitar_pasarela_por_categoria' );
function solutionm_quitar_pasarela_por_categoria( $available_gateways ) {
if ( is_admin() ) return $available_gateways;
if ( ! is_checkout() ) return $available_gateways;
$unset = false;
$category_ids = array( 2, 34 );//Sustituye estos números por los IDs de las categorías en las que se aplica
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
$terms = get_the_terms( $values['product_id'], 'product_cat' ); 
foreach ( $terms as $term ) { 
if ( in_array( $term->term_id, $category_ids ) ) {
$unset = true;
break;
}
}
}
if ( $unset == true ) unset( $available_gateways['paypal'] );//Aquí sustituye paypal por la pasarela que quieras desactivar
return $available_gateways;
}
Monedas / Currency
PEN
USD
EUR
BRL
BOB
ARS
CLP
COP
UYU
PYG
MXN
0
    0
    Mi Carrito
    Empecemos a comprar y a llenar este carrito