Hola!
Cómo están?
Tengo un caso muy raro, tengo un error crítico pero sólo en el apartado de Análisis de Wocommerce, luego todo funciona perfecto y entran los pedidos sin drama.
Esto no me permite saber como voy en las ventas y el problema es una línea de código.
Cómo puedo agregar una variable para qué no lea esto si no es en la página de finalizar compra?
Sólo quiero que lo lea en esa página (Finalizar-compra), osino trae problemas ya que Wc_costumer no existe y da nulo.
add_filter('woocommerce_available_payment_gateways','deshabilitar_por_ciudad',10,1);
function deshabilitar_por_ciudad($array_payments) {
if(WC()->customer->get_billing_state() != 'Asunción' && WC()->customer->get_billing_state() != 'Lambare' && WC()->customer->get_billing_state() != 'Fernando de la Mora' ) // Acá hay miles más pero para no alargar dejo ahí
unset($array_payments['cod']); // Deshabilito el pago en efectivo
return $array_payments;
}
Contenido solo visible a usuarios registrados
Luego de leer lo que les puse se me ocurrió la solución, agregué esta línea de código:
if( is_admin() )
return $available_gateways;
El código funcional y final quedó así:
/Deshabilitar pago en efectivo por ciudades
add_filter('woocommerce_available_payment_gateways','deshabilitar_por_ciudad',10,1);
function deshabilitar_por_ciudad($array_payments) {
//Para que no lea backend
if( is_admin() )
return $available_gateways;
if(WC()->customer->get_billing_state() != 'Asunción' && WC()->customer->get_billing_state() != 'Lambare' && WC()->customer->get_billing_state() != 'Fernando de la Mora' && WC()->customer->get_billing_state() != 'Loma Pyta' && WC()->customer->get_billing_state() != 'Villa Elisa' && WC()->customer->get_billing_state() != 'Zeballos' && WC()->customer->get_billing_state() != 'San Antonio' && WC()->customer->get_billing_state() != 'San Lorenzo' && WC()->customer->get_billing_state() != 'Luque' && WC()->customer->get_billing_state() != 'Mariano Roque Alonso' && WC()->customer->get_billing_state() != 'Ñemby' && WC()->customer->get_billing_state() != 'Limpio' && WC()->customer->get_billing_state() != 'Capiata' && WC()->customer->get_billing_state() != 'Ypané' && WC()->customer->get_billing_state() != 'Areguá' )
unset($array_payments['cod']); // Deshabilito el pago en efectivo
return $array_payments;
} // fin
Espero que le sirva a alguien que viva en Latinoamérica y quiera esconder algún método de pago según la ciudad, estado, país.
PD: no pongo WC()->customer->get_billing_state() = $String; //por que salta un error, así funciona perfecto hasta ahora jaja
Graciaaas!
Hola Rosa.
Ostras genial !!! me alegra qu elo solucionaras.
Muchas gracias por informarnos, estoy seguro que les vendrá muy bien a otros usuarios con el mismo problema y por supuesto a nosotros.
Cerramos el tema.
Un saludo y de nuevo agradecerte que aportes soluciones a el Foro.