Ocultar métodos de pago según el método de envío seleccionado en WooCommerce [duplicate]

2 minutos de lectura

Ocultar metodos de pago segun el metodo de envio seleccionado
Sina Arzany

Estaba tratando de ocultar dos métodos de pago si se seleccionó un método de envío agregando el código a continuación al tema function.php

// Filter payment gatways for different shipping methods
function my_custom_available_payment_gateways( $gateways ) {
    $chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
    if ( in_array( 'flat_rate:7', $chosen_shipping_rates ) ) {
        unset( $gateways['stripe'] );
        unset( $gateways['ppec_paypal'] );
    }
    endif;
    return $gateways;
}
 add_filter( 'woocommerce_available_payment_gateways', 
'my_custom_available_payment_gateways' );

todo está funcionando excepto que recibí este error en la página del producto.

Advertencia:
in_array() espera que el parámetro 2 sea una matriz, nulo dado en [theme function.php and line number]

  • el código funciona correctamente y cuando se selecciona el método de envío elegido, no se muestran dos pasarelas de pago. pero también recibo ese error nulo en la página del producto.

    – Sina Arzany

    2 abr 2019 a las 15:00

Ocultar metodos de pago segun el metodo de envio seleccionado
LoicTheAztec

Utilice lo siguiente para evitar este error (también eliminado endif;):

// Filter payment gatways for different shipping methods
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways', 10, 1 );
function my_custom_available_payment_gateways( $available_gateways ) {
if( is_admin() ) return $available_gateways; // Only for frontend

    $chosen_shipping_rates = (array) WC()->session->get( 'chosen_shipping_methods' );

    if ( in_array( 'flat_rate:12', $chosen_shipping_rates ) ) {
        unset( $available_gateways['stripe'], $available_gateways['ppec_paypal'] );
    }

    return $available_gateways;
}

El código va en el archivo functions.php de su tema secundario activo (o tema activo). Debería funcionar.

  • Gracias. esto resolvió el problema. no hay mas error

    – Sina Arzany

    3 de abril de 2019 a las 8:17

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad